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