gpt4 book ai didi

android - 没有在 TabActivity 中调用 onBackPressed

转载 作者:行者123 更新时间:2023-11-30 03:19:39 28 4
gpt4 key购买 nike

这是我的第一篇文章,我是在扫描了一些针对“onBackPressed”和“onKeyDown”问题的“可能提出的”解决方案后写的。我认为它们不适合我的问题。

但如果我错了请启发我(以防万一)。

好的,这是我的简单问题。

我有 2 个 Activity :A : Starter Activity(正常 Activity )B:主菜单 Activity (TabActivity)

Splash Activity (A) 执行一些初始化操作和一些检查。如果满足,它会简单地调用主菜单 Acitvity (B) 的 Intent 。

Activity B 只是为 4 个子 Activity 填充一个 tabHost。

好的,到目前为止一切都很好。但是

我希望 Activity B 对返回按钮使用react。它不应该让用户返回到起始屏幕,而是应该将应用程序发送到后台(按下主页按钮)。

但是 Activity B 从来没有对它使用react。从未写入任何 logcat 输出。

这是我的activity B的代码。

public class StartScreenTab extends TabActivity {
private final static String TAG = StartScreenTab.class.getSimpleName();
private MyTabHostWrapper tabHost;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initTab();

}

private void initTab() {
Log.i(TAG, "init Main Tabs...");
tabHost = new MyTabHostWrapper(this);
// tab Start
tabHost.addNewTabSpec("tab-start", R.string.app_name,
R.drawable.ic_tab_start, StartScreen.class);

// tab Karte
tabHost.addNewTabSpec("tab-karte", R.string.umkreis_activity_name,
R.drawable.ic_tab_karte, UmkreisActivity.class);

// tab Liste
tabHost.addNewTabSpec("tab-liste", R.string.liste_activity_name,
R.drawable.ic_tab_liste, ListeActivity.class);

// tab Settings
tabHost.addNewTabSpec("tab-prefs", R.string.menu_settings,
R.drawable.ic_tab_preferences, MyPrefsActivity.class);

tabHost.setFontColor("#FFFFFF");

}

@Override
public void onDestroy(){
Log.i(TAG, "onDestroy called.");
super.onDestroy();
}

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Log.i(TAG, "KEY 'back' released");
onBackPressed();
return true;
}
return super.onKeyUp(keyCode, event);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Log.i(TAG, "KEY 'back' pressed");
onBackPressed();
return true;
}
return super.onKeyDown(keyCode, event);
}

@Override
public void onBackPressed() {
super.onBackPressed();
Log.i(TAG, "BACK pressed");
moveTaskToBack(true);
return;
}
}

我可以看到来自 init 和 onDestroy 的 logcat 输出。但是 onKeyDown、onKeyUp 和 onBackPressed 什么都没有。

你能帮帮我吗?谢谢。

最佳答案

原因是 TabActivity 失去焦点,我找到了解决方案,在你的正常 Activity 中调用代码

@Override
public void onBackPressed() {
if (getParent() != null) {
getParent().onBackPressed();
} else {
super.onBackPressed();
}
}

关于android - 没有在 TabActivity 中调用 onBackPressed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19387424/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com