我有三个这样的活动:
+ LoginPage:安装应用时只显示一次
+ MainActivity:应用的主屏幕
+ TextNoteActivity:子活动由MainActivity中的startActivityForResult调用
当我从TextNoteActivity点击主页按钮时,我不知道为什么。该应用程序将关闭。 以下是我的代码。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.lilprogramming.bossnote">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name="activity.MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar"
>
</activity>
<activity
android:name="activity.LoginPage"
android:label="@string/app_name"
android:noHistory="true"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="activity.TextNoteActivity"
android:parentActivityName="activity.MainActivity"
>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="activity.MainActivity" />
</activity>
<activity
android:name="activity.AddTagActivity"
android:label="@string/title_activity_add_tag"
android:theme="@style/AppTheme">
</activity>
</application>
在MainActivity中:
Intent i = new Intent(this, TextNoteActivity.class);
startActivityForResult(i, REQUEST_ADDTEXTNOTE);
在TextNoteActivity中:
toolbar = (Toolbar) findViewById(R.id.addTextNote_toolbar);
toolbar.setTitle("");
setSupportActionBar(toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addTextNote();
Toast.makeText(TextNoteActivity.this, "Back then", Toast.LENGTH_SHORT).show();
finish();
}
});
更新
private void addTextNote() {
String title = etTitle.getText().toString();
String content = etContent.getText().toString();
if (!title.isEmpty() && !content.isEmpty()) {
TextNote textNote = new TextNote(title, 0, content);
database.addTextNote(textNote, null);
setResult(RESULT_OK);
}
else {
setResult(Activity.RESULT_CANCELED);
}
}
答案 0 :(得分:1)
这是预期的行为
当用户按下Home
按钮时,您的活动没有理由返回结果
如果您需要捕捉Home
按钮事件
您可以覆盖onPause()
和finish()
活动。
<强>声明强>
但我担心这不是一个好的应用行为
因为当用户按下Home
按钮时,用户不会期望应用状态发生变化。