android startActivity ForResultに基づく学習心得のまとめ

3379 ワード

昨夜から今までやっとstartActivity ForResultの例をデバッグしました.ネット上では複雑すぎるか、あいまいなことを言っているか、私はたくさんの回り道をしたので、心得を書きました.
1つのメインインタフェース(メインActivity)に多くの異なるサブ機能モジュール(サブActivity)に接続でき、サブモジュールの作業が完了するとメインインタフェースに戻り、サブモジュールが完了したデータをメインActivity処理に渡す.startActivityでメインインタフェースを起動するのは新しいIntentインスタンスですが、アクセスしたメインインタフェースはactivityスタックの下で呼び出されていません.このような最大の問題は、元のインタフェースに戻らないと、複数のサブ機能モジュールがメインインタフェースにデータやサービスを提供できないことです.この時はstartActivity ForResultを使います!
目的:MainActivity.JAvaはメインインタフェースJAvaはサブ機能モジュールで、mainからsecondを起動し、secondはmainからのデータを受け取って仕事を終えた後、ボタンOKを押すと結果をmainに報告し、同時に自分で閉じてmainに戻る.
具体的な実装:4つの部分に分かれています.
1,MainActivityにボタンsendBuddleを設定し,SecondActivityにデータを送信するとともにsecondインタフェースにジャンプする.キーリスニングコード:
 
  
class sendButtonListen implements OnClickListener{
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
String str = "dajia hao ";
intent.putExtra("send", str);
intent.setClass(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, 0);
}
    }

2,SecondActivityのOnCreate関数でmainからのintentからのデータを受信する.
 
  
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        okButton = (Button)findViewById(R.id.ok); // ok , main。      
        Intent intent = getIntent();       
        String getStr = intent.getStringExtra("send");
        TextView tv = (TextView)findViewById(R.id.sendText);
        tv.setText(getStr);
        Toast.makeText(SecondActivity.this,
        " MainActivity :"+getStr,
        Toast.LENGTH_SHORT).show();
        okButton.setOnClickListener(new okButtonListen());        

       
    }

3,SecondActivityでOkボタンの傍受を行い,押すとMainActivityに戻り,同時に自分で閉じてMainActivityにデータを送信する.OKボタンの傍受コードは以下の通りです.
 
  
 class okButtonListen implements OnClickListener{
public void onClick(View v) {
// TODO Auto-generated method stub
Intent sendIntent = new Intent(SecondActivity.this, MainActivity.class);// , ! , , Inent
       Bundle bundle = new Bundle();
       bundle.putString("send", " ");
       sendIntent.putExtras(bundle);
       SecondActivity.this.setResult(RESULT_OK, sendIntent);
       SecondActivity.this.finish();
}

4,mainに戻ると,mainはsecondからのデータを受信する.MainActivityでそのOnActivity Resultメソッドを複写します.
 
  
 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==RESULT_OK){
Bundle bundle = data.getExtras();
String str = bundle.getString("send");
Toast.makeText(MainActivity.this,
" , activity :"+str,
Toast.LENGTH_SHORT).show();
}
}

注意:この中にはIntentを新設しないでください.onActivity Resultには3つのパラメータがあります.3つ目のパラメータはIntentです.彼をパラメータにすればいいだけです.