2016-10-11 11 views
-2

私は他の多くの回答を探していますが、最も完全な回答はSending data back to the Main Activity in androidです。私ができることは最高ですが、返される意図から文字列を取得しようとすると、データが表示されません。インテントデータが返されない

startActivityForRestult()を使用して2番目のアクティビティを呼び出す主なアクティビティを次に示します。次に、インテントの文字列をテキストビューに表示します。

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     Bundle extras = getIntent().getExtras(); 
     if (extras != null) { 
      String myStr = extras.getString("TASK"); 
      TextView tv = (TextView) findViewById(R.id.taskList); 
      tv.setText(myStr); 
     } 

    }//onActivityResult 

    /** Called when the user clicks the Add Task button */ 
    public void addTask(View view) { 
     Intent intent = new Intent(this, AddTaskActivity.class); 
     startActivityForResult(intent, 1); 
    } 
} 

また、変数の文字列タスクをメインアクティビティに戻そうとしている2番目のアクティビティです。 コードは、ちょうど意図リターンセクションに切り捨て:私は読んだことがあるすべてのものから

String task = "foo"; 

Intent returnIntent = getIntent(); 
returnIntent.putExtra("TASK", task); 
setResult(Activity.RESULT_OK,returnIntent); 
finish(); 

が、これはすべてのことが含まれるべきであるが、何も最初のアクティビティに表示しないように私は、何かを見逃している、と私は不明ですなぜ。

答えて

1

アクティビティの作成時に渡されたインテントを取得するgetIntentではなく、あなたのサンプルでdataというonActivityResultに渡されたインテントを使用します。

I.E.

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
     Bundle extras = data.getExtras(); //THIS IS THE LINE I CHANGED 
     if (extras != null) { 
      String myStr = extras.getString("TASK"); 
      TextView tv = (TextView) findViewById(R.id.taskList); 
      tv.setText(myStr); 
     } 
}//onActivityResult 
0

onActivityResult()メソッドでは、getIntent()メソッドを使用してデータを取得しませんでした。

onActivityResult()メソッドには3つの引数があります。

  1. startActivityForResult()メソッドに要求コードが渡されました。

  2. 2番目のアクティビティで指定された結果コード。これは、操作が成功した場合はRESULT_OK、ユーザーがバックアウトした場合、または何らかの理由で操作が失敗した場合はRESULT_CANCELEDです。

  3. 結果データを運ぶインテント。

したがって、3番目の引数からデータを取得できます。

関連する問題