2013-11-21 3 views
8

他のアクティビティでmainactivityからメソッドを呼び出したいと思います。そのために、私は多くを研究し、OnActivityResultを使用することが最良の選択であることを発見しました。誰かが例の助けを借りてこのメソッドを使用する方法を説明してもらえますか?私は似たような質問をしましたが、混乱しています。 ありがとう!onactivityの結果を使用する

EDIT:私のアプリケーションでカスタムダイアログアクティビティがあります。ユーザーに新しいゲームを開始するかどうかを尋ね、それには2つのボタンがあります。上記のメソッドを実装するには、押されたボタンを取得する必要があります。ここで

答えて

28

が結果に

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

      if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { 

       String requiredValue = data.getStringExtra("Key"); 
      } 
     } catch (Exception ex) { 
      Toast.makeText(Activity.this, ex.toString(), 
        Toast.LENGTH_SHORT).show(); 
     } 

    } 
を取得するためにonActivityResult使用今の意図

Intent intent = new Intent(Activity.this, 
        CustomDialogActivity.class); 
      startActivityForResult(intent , REQUEST_CODE); 

を使用して、カスタムダイアログ活動を呼び出し

定数

public static final REQUEST_CODE = 1; 
を定義するチェックしてください例です。カスタムダイアログ活動の使用では

Intent intent = getIntent(); 
intent.putExtra("key", value); 
setResult(RESULT_OK, intent); 
finish(); 
+0

カスタムダイアログではどうすればよいですか? –

+0

すべてがうまくいったら、requestCodeを1に設定してRESULT_OKを1にして、activityResultでif(requestCode == RESULT_OK)をチェックできます。 設定結果として、カスタムダイアログアクティビティでsetResultが使用されています。上記のように、キーと値のペアを持つデータを置くことができます。 onActivityResultでそのデータを取得するには、そのキー名を使用してその値を取得します。 –

3
+0

お返事ありがとうございます。私は既にdeveloper.android.comの例を見てきました。しかし、私はそれが混乱していることが分かった主活動や他の活動を参考にして、私に例を挙げてください。私は初心者です。 –

+1

これを読んでください---- http://learnandroideasily.blogspot.in/2013/03/starting-activity-for-result-in-android.html http://android-er.blogspot.in/2011/08 /return-result-to-onactivityresult.html – vinay

0

を引き起こす設定するには、このコードでは、活動を開始し

あなたがstartActivityForResult(に追加の整数の引数を渡す必要があります)method.Youはそれを行うことが定数を定義するか、単純に整数を入力します。整数引数は、要求を識別する「要求コード」です。結果Intentを受け取ると、コールバックは同じ要求コードを提供します。これにより、アプリは結果を適切に識別し、その処理方法を決定できます。

static final int ASK_QUESTION_REQUEST = 1; 
// Create an Intent to start SecondActivity 
Intent askIntent = new Intent(FirstActivity.this, SecondActivity.class); 

// Start SecondActivity with the request code 
startActivityForResult(askIntent, ASK_QUESTION_REQUEST); 

戻る結果:第2の活性クラスでの作業を完了した後

は、単純に結果を設定し、それが来るそのアクティビティを呼び出し、最後の仕上げ()文を書くことを忘れないでください。

// Add the required data to be returned to the FirstActivity 
      sendIntent.putExtra(Result_DATA, "Your Data"); 

      // Set the resultCode to Activity.RESULT_OK to 
      // indicate a success and attach the Intent 
      // which contains our result data 
      setResult(RESULT_OK, sendIntent); 

      // With finish() we close the SecondActivity to 
      // return to FirstActivity 
      finish(); 

は結果を受け取る:あなたは、その後の活動とリターンで行われた場合

、システムがあなたの活動のonActivityResult()メソッドを呼び出します。このメソッドには、3つの引数が含まれます。

@ startActivityForResult()に渡したリクエストコード。 @A 2番目のアクティビティで指定された結果コード。これは、操作が成功した場合はRESULT_OK、操作が失敗した場合はRESULT_CANCELEDのいずれかです。 @An結果データを格納するインテント。詳細についてはPLSの

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

    // check if the request code is same as what is passed here it is 1 
    if (requestCode == ASK_QUESTION_REQUEST) { 
     // Make sure the request was successful 
     if (resultCode == RESULT_OK) { 
      final String result = data.getStringExtra(SecondActivity.Result_DATA); 

      // Use the data - in this case display it in a Toast. 
      Toast.makeText(this, "Result: " + result, Toast.LENGTH_LONG).show(); 
     } 
    } 
} 

はこのデモを参照Getting a Result from An Activity

0

1.In意向を用いて、第2の活動への移行のためのコードを、次のあなたのFirstActivityクラスの書き込み。EX用のonClickイベント ためのコード、次のあなたのsecondActivityクラス書き込み2.In

Intent i = new Intent(this, SecondActivity.class); 
startActivityForResult(i, 100); 

:あなたのFirstActivityクラスの書き込み次のコードで

Intent intent= new Intent(); 
intent.putExtra("result",result); 
setResult(RESULT_OK,intent); 
finish(); 

3.Now:secondActivityであなたがデータを返送する場合、 onActivityResult()メソッドの場合

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    if (requestCode == 100 && resultCode == Activity.RESULT_OK){ 
      String result=data.getStringExtra("result"); 
      Log.e("Result",result); 
    } 
} 
関連する問題