Ich versuche, onBackPressed() in meinem Fragment zu verwenden, damit ich dem Benutzer erlauben kann, in einem Stapel von Fragmenten, die er in meiner App navigierte, zurück zu rollen.onBackPressed() und Fragmente
Das Problem ist, dass, wenn ich die Methode unten zu meinem Fragment hinzufügen, gibt es mir den Fehler: Method does not override method from its superclass
.
@Override
public void onBackPressed() {
android.support.v4.app.FragmentManager fragmentManager = getFragmentManager();
fragmentManager.popBackStack();
}
Würdest du wissen warum?
Danke!
geht hier das gesamte Fragment:
package it.bitrack.fabio.bitrack;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
//import android.app.Fragment;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.ArrayAdapter;
import java.util.ArrayList;
import java.util.Arrays;
import android.view.KeyEvent;
/**
* A simple {@link Fragment} subclass.
* Activities that contain this fragment must implement the
* {@link AssetMngtView.OnFragmentInteractionListener} interface
* to handle interaction events.
* Use the {@link AssetMngtView#newInstance} factory method to
* create an instance of this fragment.
*/
public class AssetMngtView extends Fragment {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
View view;
ListView assetMngtListView;
ArrayAdapter<String> listAdapter;
// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
private OnFragmentInteractionListener mListener;
public AssetMngtView() {
// Required empty public constructor
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment AssetMngtView.
*/
// TODO: Rename and change types and number of parameters
public static AssetMngtView newInstance(String param1, String param2) {
AssetMngtView fragment = new AssetMngtView();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onBackPressed() {
android.support.v4.app.FragmentManager fragmentManager = getFragmentManager();
fragmentManager.popBackStack();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
view = inflater.inflate(R.layout.fragment_asset_mngt_view, container, false);
assetMngtListView = (ListView) view.findViewById(R.id.assetMngtListView);
setListView();
return view;
}
public void setListView() {
String[] options = new String[]{"Bind tag & thing", "Create new thing", "Edit existent thing", "Maintain existent thing", "View things notifications"};
ArrayList<String> optionsList = new ArrayList<String>();
optionsList.addAll(Arrays.asList(options));
listAdapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_list_item_1, optionsList);
assetMngtListView.setAdapter(listAdapter);
}
// TODO: Rename method, update argument and hook method into UI event
public void onButtonPressed(Uri uri) {
if (mListener != null) {
mListener.onFragmentInteraction(uri);
}
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof OnFragmentInteractionListener) {
mListener = (OnFragmentInteractionListener) context;
} else {
throw new RuntimeException(context.toString()
+ " must implement OnFragmentInteractionListener");
}
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
/**
* This interface must be implemented by activities that contain this
* fragment to allow an interaction in this fragment to be communicated
* to the activity and potentially other fragments contained in that
* activity.
* <p>
* See the Android Training lesson <a href=
* "http://developer.android.com/training/basics/fragments/communicating.html"
* >Communicating with Other Fragments</a> for more information.
*/
public interface OnFragmentInteractionListener {
// TODO: Update argument type and name
void onFragmentInteraction(Uri uri);
}
}
Bitte geben Sie ein [mcve]. Welche Klasse enthält insbesondere die Methode, die Sie überschreiben? Wie erstellen und zeigen Sie Ihre Fragmente? –
Beachten Sie, dass durch Drücken der Zurück-Taste der hintere Stapel automatisch geöffnet wird. Es gibt keinen Grund, onBackPressed() zu überschreiben, um dies selbst zu tun. –
Diese Methode sollte eine native Android-Methode sein, die die Zurück-Schaltfläche behandelt, die in jedem Android-Telefon verfügbar ist. Mein Code ist in meiner Frage vollständig verfügbar. –