【发布时间】:2015-04-30 16:19:11
【问题描述】:
我有一个具有 Main Activity 的 android 应用程序,它在第一次启动时会运行 Register 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() 覆盖,但我将其放入只是为了尝试。如您所见,我正在尝试使后退按钮将用户带回主屏幕(因为返回主活动只会将用户带回注册活动,因为他们仍未登录。
但是当我按下注册活动中的后退按钮时,什么也没有发生,没有日志,什么都没有。我不知道这是否与使用startActivityForResult() 调用的活动有关。但是即使onActivityResult() 在按下后退按钮时也不会被回调。
【问题讨论】:
-
什么
startActivity()(而不是onBackPressed()中的finish()?setResult()在哪里? -
我正在使用
startActivity(),因为我希望后退按钮将用户返回到主屏幕而不是返回到主活动(如果它确实使用了finish()函数,它将返回用户注册活动,因为该用户仍未登录)。setResult()在用户实际登录时被调用。我没有包含该代码,因为它与用户按下后退按钮的时间无关。 -
活动中有片段吗?
-
这个按钮在其他应用程序上是否有效?
-
stackoverflow.com/questions/6927628/… 这应该会有所帮助。
标签: java android back-button onbackpressed