在我的应用程序中,我有一个菜单页面,其中包含4个按钮历史记录,类型,好处和退出。启动Splash Screen菜单页面后。如果我启动历史记录,类型或福利活动。我没有完成菜单活动,因为如果我完成此操作然后按下导航栏应用程序关闭导航图标。当我在3个活动中的任何一个并按下设备后退按钮然后我回到菜单活动。如果那时我按下设备上的退出或后退按钮。 EndSplash启动和应用程序完成我想要的那些。但经过一秒钟的应用程序重启。如何在退出和退回按钮上关闭应用程序?
我还在操作栏下方导航标签。最低API级别8。
在菜单活动中 -
exit = (Button) findViewById(R.id.exit);
exit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
i = new Intent(MainActivity.this, EndSplash.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
finish();
}
});
@Override
public void onBackPressed() {
super.onBackPressed();
i = new Intent(MainActivity.this, EndSplash.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
finish();
}
历史,类型和福利活动 -
public void onBackPressed()
{
startActivity(new Intent(this, MainActivity.class));
finish();
}
答案 0 :(得分:0)
尝试这个退出应用程序: -
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
答案 1 :(得分:0)
你应该按下按钮BroadcastReceiver
,你应该完成注册的所有活动。你应该在oncreate()
注册所有活动。广播接收器有很多实现。
答案 2 :(得分:0)
要完成所有活动,您可以创建一个Utils.java类并在其上添加此方法:
public static List<Context> listContext = new ArrayList<Context>();
public static void finishActivities()
{
System.out.println("inside finishActivities:: ");
for (Context context : Utils.listContext) {
if(context!=null)
((Activity) context).finish();
}
Utils.listContext.clear();
}
并将您的活动上下文添加到列表中:
Utils.listContext.add(this);
并从onBackPressed()Activity调用此方法,如:
Utils.finishActivities();
答案 3 :(得分:0)
您可以使用此代码:
Intent homeIntent = new Intent(Intent.ACTION_MAIN);
homeIntent.addCategory(Intent.CATEGORY_HOME);
PackageManager pm1 = context.getPackageManager();
List<android.content.pm.ResolveInfo> activities = pm1.queryIntentActivities(homeIntent, 0);
String className = activities.get(0).activityInfo.taskAffinity;
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startMain.setPackage(className);
context.startActivity(startMain);
((Activity) context).finish();