Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在TabActivity中未调用onBackPressed_Android_Back Button_Pressed - Fatal编程技术网

Android 在TabActivity中未调用onBackPressed

Android 在TabActivity中未调用onBackPressed,android,back-button,pressed,Android,Back Button,Pressed,这是我的第一篇文章,我是在扫描了一些针对“onBackPressed”和“onKeyDown”问题的“可能提出的”解决方案之后写的。我认为它们不适合我的问题 但如果我错了,请告诉我(如果是这样的话,请原谅) 好的,这是我的简单问题 我有两项活动: A:启动机活动(正常活动) B:主菜单活动(选项卡活动) Splash活动(A)执行一些init内容和一些检查。如果满足,它只调用主菜单Acitvity(B)的意图 活动B仅为4个子活动填充tabHost 好的,到目前为止一切都很好。但是 我希望活动B

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

但如果我错了,请告诉我(如果是这样的话,请原谅)

好的,这是我的简单问题

我有两项活动: A:启动机活动(正常活动) B:主菜单活动(选项卡活动)

Splash活动(A)执行一些init内容和一些检查。如果满足,它只调用主菜单Acitvity(B)的意图

活动B仅为4个子活动填充tabHost

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

我希望活动B在后退按钮上做出反应。它不应该让用户返回starter启动屏幕,而是应该将应用程序发送到后台(按下home按钮)

但活动B从未对此作出反应。从未写入任何logcat输出

这是我活动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、onkeydup和onBackPressed中没有任何内容


你能帮我吗?Thx.

我想可能是tabHost引起的。我没有为绑定到选项卡的活动指定任何焦点命令,因此“返回”事件可能丢失在某个地方

我回避了整个情况,解决了我的问题。我删除了splash活动(A),并将其init函数移动到StartScreenTab活动(B)


因此,我不需要对back事件做出任何进一步的反应,因为标准行为现在令人满意。

我认为这可能是由tabHost引起的。我没有为绑定到选项卡的活动指定任何焦点命令,因此“返回”事件可能丢失在某个地方

我回避了整个情况,解决了我的问题。我删除了splash活动(A),并将其init函数移动到StartScreenTab活动(B)


因此,我不需要对back事件做出任何进一步的反应,因为标准行为现在令人满意。

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

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

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

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