Android onActivityResult未获得结果+;模式

Android onActivityResult未获得结果+;模式,android,android-fragments,startactivityforresult,Android,Android Fragments,Startactivityforresult,从某个片段中,我调用一个活动,如下所示: private void setEmailChangeListener() { emailChangeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getActivity(), EmailCha

从某个
片段
中,我调用一个
活动
,如下所示:

private void setEmailChangeListener() {
    emailChangeButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(getActivity(), EmailChangeActivity.class);
            startActivityForResult(intent, 1);
        }

    });
}
// Result From Other Activities
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == Activity.RESULT_OK && requestCode == 1) {
        Log.i("result", "reqCode = 1, zmieniam adres email w nav draw i odswierzam fragment");
        navHeaderEmail.setText(db.getEmailAdress());
        Fragment fragment = getSupportFragmentManager().findFragmentByTag(
                TAG_FRAGMENT_ACCOUNT_SETTINGS);
        FragmentTransaction fragmentTransaction =
                getSupportFragmentManager().beginTransaction();
        fragmentTransaction.detach(fragment);
        fragmentTransaction.attach(fragment);
        fragmentTransaction.commit();

        showSnackbarInfo(getString(R.string.inf_email_change_success),
                R.color.snackbar_success);
    }
}
在该
活动中
我对数据库中的电子邮件进行了一些更改,然后更新本地数据库中的信息(更新的电子邮件以及更新的时间和日期)。然后我调用
setResult

     if (!error) {
       JSONObject user = jObj.getJSONObject("user");
                                    String updatedAt = user.getString("updated_at");

       String userUniqueId = db.getUserUniqueId();
       db.updateUpdatedAt(updatedAt, userUniqueId);

       Intent returnIntent = new Intent();
       setResult(Activity.RESULT_OK, returnIntent);
       finish();
} else {
       String errorMsg = jObj.getString("error_msg");
       showSnackbarInfo(errorMsg, R.color.snackbar_error);
}
在打开了
片段的
活动
中,我想更新
片段
中的信息,方法是
分离
附加
,以便重新格式化。我在onActivityResult中这样做:

private void setEmailChangeListener() {
    emailChangeButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(getActivity(), EmailChangeActivity.class);
            startActivityForResult(intent, 1);
        }

    });
}
// Result From Other Activities
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == Activity.RESULT_OK && requestCode == 1) {
        Log.i("result", "reqCode = 1, zmieniam adres email w nav draw i odswierzam fragment");
        navHeaderEmail.setText(db.getEmailAdress());
        Fragment fragment = getSupportFragmentManager().findFragmentByTag(
                TAG_FRAGMENT_ACCOUNT_SETTINGS);
        FragmentTransaction fragmentTransaction =
                getSupportFragmentManager().beginTransaction();
        fragmentTransaction.detach(fragment);
        fragmentTransaction.attach(fragment);
        fragmentTransaction.commit();

        showSnackbarInfo(getString(R.string.inf_email_change_success),
                R.color.snackbar_success);
    }
}
调用
setResult
后,没有任何事情发生,就像我没有正确设置结果或其他什么事情一样。你能帮我做这个吗

下面是它应该如何工作的模式:

编辑:

这是我的
AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.nazwamarki.myapplication">

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <application
        android:name=".app.AppController"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/application_name"
        android:theme="@style/AppTheme">

        <!-- Home Activity -->
        <activity
            android:name=".HomeActivity"
            android:label="@string/application_name"
            android:theme="@style/AppTheme.Normal">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- Login Activity -->
        <activity
            android:name=".LoginActivity"
            android:label="@string/login_activity_name"
            android:parentActivityName=".HomeActivity"
            android:theme="@style/AppTheme.Logreg">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.example.nazwamarki.myapplication.HomeActivity" />
        </activity>

        <!-- Sign Up Activity -->
        <activity
            android:name=".SignUpActivity"
            android:label="@string/register_activity_name"
            android:parentActivityName=".HomeActivity"
            android:theme="@style/AppTheme.Logreg">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.example.nazwamarki.myapplication.HomeActivity" />
        </activity>

        <!-- Email Change Activity -->
        <activity
            android:name=".EmailChangeActivity"
            android:label="@string/change_email_activity_name"
            android:theme="@style/AppTheme.Normal">
        </activity>

        <!-- Password Change Activity -->
        <activity
            android:name=".PasswordChangeActivity"
            android:label="@string/change_password_activity_name"
            android:theme="@style/AppTheme.Normal">
        </activity>

        <!-- Recipe Activity -->
        <activity
            android:name=".RecipeActivity"
            android:label="@string/recipe_activity_name"
            android:parentActivityName=".HomeActivity"
            android:theme="@style/AppTheme.Normal">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.example.nazwamarki.myapplication.HomeActivity" />
        </activity>
    </application>

</manifest>

你能试试吗

getActivity().startActivityForResult(intent, 1);
或者重写它自身片段中的onActivityResult


我遇到了相反的问题,我试图在片段中使用onActivityResult,但有时它会转到父活动,因此我最终使用第一行并在父活动中处理它

如何在AndroidManifest.xml中声明您的活动?@Elenasys请检查我编辑的答案:)也许有些想法是因为我有无为什么它不起作用:/它现在工作得很好!感谢您的帮助:)所以您所要做的就是提供
getActivity
以获取活动上下文:)