gpt4 book ai didi

java - onBackPressed() 没有被调用

转载 作者:太空宇宙 更新时间:2023-11-04 13:54:34 25 4
gpt4 key购买 nike

我有一个 Android 应用程序,它有一个主 Activity ,第一次启动时将运行一个注册 Activity 供用户登录(或者如果用户尚未登录)。在注册 Activity 中时,后退按钮不会执行任何操作。这是我的代码:

Manifest.xml:

<activity
android:name="com.ddv.android.gcm.support.app.MainActivity"
android:label="@string/title_activity_main"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.ddv.android.gcm.support.app.RegisterActivity"
android:screenOrientation="portrait" >
</activity>

MainActivity.java(调用注册 Activity ):

protected void launchRegistrationIntent() {
Intent intent = new Intent(getBaseContext(), RegisterActivity.class);
startActivityForResult(intent, GET_USERNAME);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d(TAG, "OnActivityResult");
if (data != null) {
final String username = data.getStringExtra("USERNAME");
...
}
}

RegisterActivity.java:

@Override
public void onBackPressed() {
Log.d(TAG, "Back button pressed");
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Log.d(TAG, "Back button pressed (old)");
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
}
return true;
}

该应用程序在 Android 4.0 或更高版本上运行,因此我认为我不需要 onKeyDown() 覆盖,但我将其放入只是为了尝试一下。正如您所看到的,我正在尝试使后退按钮将用户带回主屏幕(因为返回主 Activity 只会将用户带回注册 Activity ,因为他们尚未登录。

但是当我按下注册 Activity 内的后退按钮时,没有任何反应,没有日志,什么也没有。我不知道这是否与使用 startActivityForResult() 调用的 Activity 有关。但当按下后退按钮时,即使 onActivityResult() 也不会被回调。

最佳答案

尝试这种方式可能会解决您的问题:

@Override
public void onBackPressed() {
Log.d(TAG, "Back button pressed");
Intent startMain = new Intent(RegisterActivity.this, MainActivity.class);
startMain.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(startMain);
}

关于java - onBackPressed() 没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29972888/

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