2

私は経験豊富な Java プログラマーで、Android 開発の最初の一歩を踏み出しています。私の問題は単純です。私onActivityResult()はメイン アクティビティで実行されません。これが私がしたことです。

のメソッドではMainActivityonCreate

Intent intent = new Intent(MainActivity.this, NewScreen.class);

startActivityForResult(intent,RESULT_OK);

そして、onActivityResultメソッドをオーバーライドしましたMainActivity

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

    Log.d("Debug", "Received");
}

活動中NewScreen:

Intent intent = new Intent(NewScreen.this, MainActivity.class);

this.setResult(RESULT_OK,intent);

Log.d("Debug", "Setting the Result");

finish();

私のマニフェストファイル:

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".MainActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="NewScreen"></activity>

</application>
4

3 に答える 3

5

RESULT_OKリクエストコードとして使用しました。の値RESULT_OKは負です (-1実際には)。NewScreenそのため、アクティビティの結果が得られませんでした。requestCode引数のドキュメントを見ると、次のように書かれています。

requestCode >= 0 の場合、このコードはアクティビティの終了時に onActivityResult() で返されます。

したがって、非負のリクエスト コードを定義し、それを に使用する必要がありますstartActivityForResult。次に例を示します。

public class MainActivity extends Activity
{

    static final int REQUEST_CODE = 13;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
         //...             

         Intent intent = new Intent(MainActivity.this, NewScreen.class);
         startActivityForResult(intent, REQUEST_CODE);
    }
}
于 2011-06-25T20:13:08.017 に答える
4

NewScreen アクティビティで、Intent のデフォルト (パラメーターなし) コンストラクターを使用してみてください...

Intent intent = new Intent();

setResult(RESULT_OK,intent);

Log.d("Debug", "Setting the Result");

finish();

編集:また、アクティビティに送信する「リクエストコード」はRESULT_OK、たとえば..

startActivityForResult(intent, 1234);
于 2011-06-25T18:45:15.387 に答える
1

呼び出されていないことを確信していますか。結果コードを出力してみてください。ゼロの場合、結果がキャンセルされていることを意味し、メソッドが実際には何もしていないという錯覚を与える可能性があります。

于 2011-06-25T18:52:35.793 に答える