在startActivyForResult之后立即调用onResultActivity

时间:2014-02-24 09:15:44

标签: android

在我的主要活动中,我有这段代码:

noConnectionButton.setOnClickListener(new OnClickListener() {

@Override
        public void onClick(View v) {
            startActivityForResult(new Intent(Settings.ACTION_WIRELESS_SETTINGS), SET_CONNECTION);

        }
    });
onCreate方法中的

。然后:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if(requestCode == SET_CONNECTION){

        checkConnection();

    }

}

所以我想做的是以用户可以打开无线或数据连接的方式启动设置活动。 我的问题是onActivityResult过早被调用!!!所以我希望只有在用户回到我的活动后才能调用它。 任何建议??

这里是清单

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="it.polimi.metalnews"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="13"
    android:targetSdkVersion="19" />

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

<application
    android:allowBackup="true"
    android:icon="@drawable/launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="it.polimi.metalnews.MainActivity"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="it.polimi.metalnews.HomeActivity"
        android:label="@string/title_activity_home" >
    </activity>
    <activity
        android:name="it.polimi.metalnews.NewsActivity"
        android:label="@string/title_activity_news" >
    </activity>
    <activity
        android:name="it.polimi.metalnews.AlbumActivity"
        android:label="@string/title_activity_album" >
    </activity>
    <activity
        android:name="it.polimi.metalnews.ContestActivity"
        android:label="@string/title_activity_contest" >
    </activity>
</application>

2 个答案:

答案 0 :(得分:0)

按照这个过程:

@覆盖

protected void onActivityResult(int requestCode,int resultCode,Intent data)  {

//检查我们正在回复哪个请求

if (requestCode == PICK_CONTACT_REQUEST) {
    // Make sure the request was successful
    if (resultCode == RESULT_OK) {
        // The user picked a contact.
        // The Intent's data Uri identifies which contact was selected.

        // Do something with the contact here (bigger example below)
    }
}

}

使用以下链接获取更多详细信息:

http://developer.android.com/training/basics/intents/result.html

答案 1 :(得分:0)

在onActivity结果中,首先通过将结果代码与RESULT_OK进行比较来检查结果是否来自操作是否正常:

if(resultCode == RESULT_OK){         //你成功回来然后做你想做的事。 //然后,您可以根据您的要求检查特定数据。     }

因为如果结果不好就没有理由深入。如果用户取消,每个系统服务都将导致RESULT_OK或RESULT_CANCEL。

我认为意图声明没有任何问题但是我读了这篇文章link它以更好的方式解释了你的问题

这是因为Activity是SingleTask,无论何时调用它都会报告结果。