我的应用程序中有三个选项卡,其中一个扩展了ActivityGroup而不是Activity.但我不认为它的问题,我删除了这个标签,它一直在发生.
所以我的问题是,我该如何解决它,如何让它进入上一次活动而不是进入主屏幕?
实际上,它会进入调用它的最后一个屏幕.如果我在主屏幕上调用它,那么如果我在主屏幕上调用它,我会在其中放置快捷方式和小部件进入此屏幕.
对于我在docs中读到的内容,它应该转到历史堆栈的最后一个,这意味着这个屏幕在堆栈中,但没有我的活动.对?
我试过这个,但不适用于所有活动.它一直在主屏幕上.我不知道它能是什么.
@OverrIDe public boolean onKeyDown(int keyCode,KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { finish(); return true; } return super.onKeyDown(keyCode,event); }
我也试过onBackpressed()方法,但没有.而且,而不是调用完成,我尝试了一个新的意图,并调用一些活动明确,但没有.
我不能把我所有的活动放在这里因为很多.
但是这里有一个,也许如果有什么用,我可以在别人身上实施.谢谢.
public class MyActivity extends Activity { private ListVIEw ListvIEw; private ImageVIEw imgVIEw; private Resources res; private Drawable Transition; private SimpleCursorAdapter adapter; private DataHandlerDB handler; private sqliteDatabase db; private OpenHelper helper; @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.main); helper = new OpenHelper(this); db = helper.getWritableDatabase(); setBasicContent(); } @OverrIDe public voID onStart() { super.onStart(); helper = new OpenHelper(this); db = helper.getWritableDatabase(); setBasicContent(); } @OverrIDe public voID onDestroy() { super.onDestroy(); DataHandlerDB.selecttopCalls(this).close(); db.close(); helper.close(); } @OverrIDe public voID onPause() { super.onPause(); } @OverrIDe public voID onStop() { super.onStop(); DataHandlerDB.selecttopCalls(this).close(); db.close(); helper.close(); } @OverrIDe protected voID onResume() { super.onResume(); setBasicContent(); } public voID setBasicContent() { ListvIEw = (ListVIEw) findVIEwByID(R.ID.List_vIEw); Cursor c = DataHandlerDB.selecttopCalls(this); c.movetoFirst(); startManagingCursor(c); adapter = new SimpleCursorAdapter(this,R.layout.List_item,c,new String[] { DataHandlerDB.CONTACT_name_Col,DataHandlerDB.CONTACT_NUMBER_Col,DataHandlerDB.CONTACT_DURATION_Col,DataHandlerDB.CONTACT_DATE_Col },new int[] { R.ID.contact_name,R.ID.phone_number,R.ID.duration,R.ID.date }); ListvIEw.setAdapter(adapter); }}
这是扩展ActivityGroup的活动,它的调用如下:
tabHost.addTab(tabHost.newTabSpec("three").setIndicator("Filter Options",res.getDrawable(R.drawable.filteroptionsiconfile)) .setContent(new Intent(this,FilterOptionsGroup.class)));
FilterOptionsGroup.java
public class FilterOptionsGroup extends ActivityGroup { public static FilterOptionsGroup group; private ArrayList<VIEw> history; @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.history = new ArrayList<VIEw>(); group = this; VIEw vIEw = getLocalActivityManager().startActivity( "FilterOptions",new Intent(this,FilterOptions.class) .addFlags(Intent.FLAG_ACTIVITY_CLEAR_top)) .getDecorVIEw(); replaceVIEw(vIEw); } public voID replaceVIEw(VIEw v) { // Adds the old one to history history.add(v); // Changes this Groups VIEw to the new VIEw. setContentVIEw(v); }}解决方法 如果所有活动都封装在选项卡主机中,并且它们都在选项卡中托管,那么它们实际上并不是位于堆栈中.它们位于前景视图中,即标签主机屏幕,后退按钮将您转到上一个应用程序. 总结
以上是内存溢出为你收集整理的android – BackButton不会调用历史堆栈中的最后一个活动全部内容,希望文章能够帮你解决android – BackButton不会调用历史堆栈中的最后一个活动所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)