单击主页按钮时未调用onActivityResult

时间:2016-01-12 15:12:18

标签: android onactivityresult

我有三个这样的活动:
+ 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);
    }

}

1 个答案:

答案 0 :(得分:1)

这是预期的行为
当用户按下Home按钮时,您的活动没有理由返回结果 如果您需要捕捉Home按钮事件
您可以覆盖onPause()finish()活动。

<强>声明
但我担心这不是一个好的应用行为 因为当用户按下Home按钮时,用户不会期望应用状态发生变化。