Java 使用导航抽屉连接onClickItemListener时会混淆

Java 使用导航抽屉连接onClickItemListener时会混淆,java,android,android-fragments,android-intent,navigation,Java,Android,Android Fragments,Android Intent,Navigation,现在我正在开发一个android应用程序,它使用main活动中的导航抽屉。当我试图在导航抽屉上附加一个onItemClickListener时,我被卡在了这个部分。因此,现在当用户单击导航抽屉上的项目时,它是工作(移动到用户单击的其他活动)当用户按back键时,它将转到MainActivity(仍然是我想要的),但当在MainActivity上时,当用户再次按back键退出时,应用程序无法正确退出,它将移动到另一个活动,即(总是)新的事务活动(这是我不想要的),当用户单击导航抽屉时,这种情况就会

现在我正在开发一个android应用程序,它使用
main活动中的导航抽屉
。当我试图在导航抽屉上附加一个
onItemClickListener
时,我被卡在了这个部分。因此,现在当用户单击导航抽屉上的项目时,它是工作(移动到用户单击的其他活动)当用户按back键时,它将转到
MainActivity
(仍然是我想要的),但当在
MainActivity
上时,当用户再次按back键退出时,应用程序无法正确退出,它将移动到另一个活动,即(总是)新的事务活动(这是我不想要的),当用户单击导航抽屉时,这种情况就会发生

例如: 在导航抽屉上,我有以下列表: 新变换 提醒 导入数据 导出数据 类别设置

假设用户单击提醒,则用户将移动到
提醒活动
,当用户按back键时,它将移动到
MainActivity
,但当用户再次按back键退出时,它不是退出,而是移动到新的事务活动(始终是此活动)。这只发生在用户按导航抽屉上的项目时。 请师父帮帮我,我已经在这里呆了两个星期了

谢谢你

注意:这是我为
NavigationDrawerFragment.java
编写的代码(其中我设置了
onClickListener
):

公共类NavigationDrawerFragment扩展片段实现GookAdapter.ClickListener{
专用GookAdapter适配器;
私人回收站;
公共静态最终字符串PREF_FILE_NAME=“testpref”;
公共静态最终字符串键\u USER\u LEARNED\u DRAWER=“USER\u LEARNED\u DRAWER”;
私有操作bardrawertoggle mDrawerToggle;
私人抽屉布局mDrawerLayout;
私有布尔mUserLearnedDrawer;
私有布尔值mFromSavedInstanceState;
私有视图容器视图;
公共导航抽屉碎片(){
//必需的空公共构造函数
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mUserLearnedDrawer=Boolean.valueOf(readFromPreference(getActivity(),KEY\u USER\u LEARNED\u DRAWER,“false”);
如果(savedInstanceState!=null){
mFromSavedInstanceState=true;
}
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图布局=充气机。充气(R.layout.fragment\u navigation\u抽屉、容器,错误);
recyclerView=(recyclerView)layout.findViewById(R.id.drawerList);
adapter=new-GookAdapter(getActivity(),getData());
adapter.setOnClickListener(此);
recyclerView.setAdapter(适配器);
setLayoutManager(新的LinearLayoutManager(getActivity());
返回布局;
}
公共静态列表getData(){
列表数据=新的ArrayList();
int[]icons={R.drawable.home,
R.drawable.提醒,
R.drawable.importdata,
R.drawable.exportdata,
R.drawable.settings};
字符串[]标题={“新交易”、“提醒”、“导入数据”、“导出数据”、“类别设置”};
对于(int i=0;i
public class NavigationDrawerFragment extends Fragment implements GookAdapter.ClickListener {
private GookAdapter adapter;
private RecyclerView recyclerView;
public static final String PREF_FILE_NAME="testpref";
public static final String KEY_USER_LEARNED_DRAWER="user_learned_drawer";
private ActionBarDrawerToggle mDrawerToggle;
private DrawerLayout mDrawerLayout;
private boolean mUserLearnedDrawer;
private boolean mFromSavedInstanceState;
private View containerView;

public NavigationDrawerFragment() {
    // Required empty public constructor
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mUserLearnedDrawer = Boolean.valueOf(readFromPreference(getActivity(), KEY_USER_LEARNED_DRAWER,"false"));
    if(savedInstanceState!=null){
        mFromSavedInstanceState=true;
    }
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View layout = inflater.inflate(R.layout.fragment_navigation_drawer, container, false);
    recyclerView= (RecyclerView) layout.findViewById(R.id.drawerList);
    adapter = new GookAdapter(getActivity(), getData());
    adapter.setOnClickListener(this);
    recyclerView.setAdapter(adapter);
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
    return layout;
}

public static List<Information> getData(){
    List<Information> data = new ArrayList<>();
    int[] icons = {R.drawable.home,
                    R.drawable.reminder,
                    R.drawable.importdata,
                    R.drawable.exportdata,
                    R.drawable.settings};
    String [] titles = {"New Transaction", "Reminder", "Import Data", "Export Data", "Category Setting"};
    for (int i=0;i<titles.length && i<icons.length;i++){
            Information current = new Information();
            current.iconId=icons[i%icons.length];
            current.title=titles[i%titles.length];
            data.add(current);
     }
    return data;
}


public void setUp(int fragmentId, DrawerLayout drawerLayout, Toolbar toolbar) {
    containerView=getActivity().findViewById(fragmentId);
    mDrawerLayout = drawerLayout;
    mDrawerToggle= new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar, R.string.drawerOpen, R.string.drawerClose){
        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            if(!mUserLearnedDrawer){
                mUserLearnedDrawer=true;
                savedToPreferences(getActivity(), KEY_USER_LEARNED_DRAWER, mUserLearnedDrawer+"");
            }
            getActivity().invalidateOptionsMenu();

        }

        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
            getActivity().invalidateOptionsMenu();
        }
    };

    if(!mUserLearnedDrawer && !mFromSavedInstanceState){
        mDrawerLayout.openDrawer(containerView);
    }
    mDrawerLayout.setDrawerListener(mDrawerToggle);
    mDrawerLayout.post(new Runnable() {
        @Override
        public void run() {
            mDrawerToggle.syncState();
        }
    });
}



public static void savedToPreferences(Context context, String preferenceName, String preferenceValue){
    SharedPreferences sharedPreferences = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString(preferenceName, preferenceValue);
    editor.apply();
}

public static String readFromPreference(Context context, String preferenceName, String defaultValue){
    SharedPreferences sharedPreferences = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE);
    return sharedPreferences.getString(preferenceName, defaultValue);
}

@Override
public void itemClicked(View view, int position) {
    if(position == 0){
        startActivity(new Intent(getActivity(), NewTransaction.class));
        getActivity().finish();
    }else if(position == 1){
        startActivity(new Intent(getActivity(), Reminder.class));
        getActivity().finish();
    }else if(position == 2){
        startActivity(new Intent(getActivity(), Reminder.class));
        getActivity().finish();
    }else if(position == 3){
        startActivity(new Intent(getActivity(), Reminder.class));
        getActivity().finish();
    }else{
        startActivity(new Intent(getActivity(), CategorySetting.class));
    }

}