我正在尝试处理片段中的后退按钮。我希望它返回到它来自的片段,但是@Override
我没有从其超类中覆盖它,但是我不为什么。此外,onBackPressed()
从未使用过该方法。我认为这很奇怪,因为它在我的活动中起作用。
public class RateFrag extends Fragment implements View.OnClickListener {
private RatingBar ratingBar;
private Button rateknap;
private Forslag forslag;
@Override
public View onCreateView(LayoutInflater i, ViewGroup container, Bundle savedInstanceState) {
View rod = i.inflate(R.layout.activity_rate, container, false);
setHasOptionsMenu(true);
forslag = ((AnnonceDisplay) this.getActivity()).getForslag();
getActivity().setTitle(forslag.getTitle());
ratingBar = (RatingBar) rod.findViewById(R.id.ratingBar);
rateknap = (Button) rod.findViewById(R.id.rateknap);
rateknap.setOnClickListener(this);
return rod;
}
@Override
public void onClick(View v) {
if (v == rateknap) {
AlertDialog alert = new AlertDialog.Builder(getActivity())
.setMessage("Vil du give " + ratingBar.getRating() + " stjerner?")
.setPositiveButton("Ja", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
launchintent();
}
}
)
.setNegativeButton("Nej", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
}
).show();
}
}
private void launchintent() {
FragmentManager fm = getFragmentManager();
Fragment f = fm.findFragmentById(R.id.fragment);
if(fm.getBackStackEntryCount() > 0){
fm.popBackStack();
} else{
getActivity().finish();
}
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_main, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.Forside) {
Intent intent = new Intent(this.getActivity(), Forside.class);
startActivity(intent);
}
else if (id == R.id.Logud){
Intent intent = new Intent(this.getActivity(), LogInd.class);
startActivity(intent);
}
return true;
}
@Override //Method does not override method from its superclass
public void onBackPressed() { //Method onBackPressed is never used
if (getFragmentManager().getBackStackEntryCount() == 0) {
getActivity().finish();
} else {
getFragmentManager().popBackStack();
}
return;
}
}
在有人说这可能是重复的之前,我在这里搜索过Stackoverflow和Google。我实际上是Override
从这里得到的,所以请告诉我哪里出了问题以及如何解决。
谢谢 :)
像这样覆盖您的Activity上的onBackPress
@Override
public void onBackPressed() {
int count = getFragmentManager().getBackStackEntryCount();
if (count == 0) {
super.onBackPressed();
} else {
getFragmentManager().popBackStack();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句