前のactivityにデータを返す

7423 ワード

メインプログラムでactivity 2を呼び出す方法をstartActivity ForResult(intent,0)0に変更すると、次のActivityが値を返す根拠となり、自己定義の参照フラグとして指定できます.プログラムはonactivityresult()という方法を書き換え、プログラムがresultを受け取った後、ロードを書き換えて元の入力した値に戻す.(ASで結果を書き換えてエラーを報告し、@overrideを削除しました)
Activityメインプログラムのコード
package com.administrator.testall;

import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v7.app.ActionBarActivity;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;

public class ChangeTest01 extends ActionBarActivity {

    private EditText et;
    private RadioButton rg1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_change_test01);

        Button button01 = (Button) findViewById(R.id.button1);
        button01.setOnClickListener(new Button.OnClickListener()
        {
                                       public void onClick(View v)
                                       {
                                           EditText et = (EditText) findViewById(R.id.editText1);
                                           double editText1 = Double.parseDouble(et.getText().toString()); // 

                                           String choose = "";
                                           RadioButton rg1 = (RadioButton) findViewById(R.id.radioButton); // 
                                           if(rg1.isClickable())
                                           {
                                               choose = "M";
                                           }
                                           else choose = "F";

                                           Intent intent = new Intent();
                                           intent.setClass(ChangeTest01.this,ChangeTest02.class); //activity 

                                           Bundle bundle = new Bundle();  //activity 
                                           bundle.putDouble("edit1",editText1); //
                                           bundle.putString("choose",choose);

                                           intent.putExtras(bundle); // bundle intert;
                                           startActivityForResult(intent, 0);    // activity
                                       }
                                    }
        );
    }

    protected void OnActivityResult(int requestCode,int resultCode,Intent data)
    {
        switch (resultCode)
        {
            case RESULT_OK:
                // activity2   
                Bundle bundle = data.getExtras();
                String choose = bundle.getString("choose");
                double edit1 = bundle.getDouble("edit1");;

                et.setText(String.valueOf(edit1));
                if(choose.equals("M")) rg1.setChecked(true);
                break;
            default:
                break;
        }
    }
}

@Overrideでの書き換えは不要ですのでご注意ください
activity 2のコードは以下の通りです.
package com.administrator.testall;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.widget.Button;
import android.widget.TextView;
import android.view.View;

public class ChangeTest02 extends ActionBarActivity {

    Bundle bundle;
    Intent intent;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_change_test02);

        intent = this.getIntent();
        bundle = this.getIntent().getExtras(); // intent bundle 

        String choose = bundle.getString("choose"); // bundle 
        double edit1 = bundle.getDouble("edit1");

        String chooseText = "";
        if(choose.equals("M"))
        {
            chooseText="A";
        }else chooseText="B";

        TextView textView1 = (TextView) findViewById(R.id.textView1);
        textView1.setText(chooseText);
        TextView textView2 = (TextView) findViewById(R.id.textView2);
        textView2.setText(String.valueOf(edit1)); //double string

        Button button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new Button.OnClickListener()
        {
                                      public void onClick(View v)
                                      {
                                          ChangeTest02.this.setResult(RESULT_OK,intent); // result activity
                                          ChangeTest02.this.finish();  // activity
                                      }
                                   }
        );
    }

}