Android入門のActivity返却データ(startActivity ForResult)

12342 ワード

紙の上で得たのは結局浅く感じて、この事は決してお辞儀をしなければならないことを知っています--陸遊
用水路を尋ねるとそれはこのようにはっきりしていて,源の活水があるために来た--朱熹
Androidには他のActivityを起動し、Activity破棄時に前のActivityにデータを戻す方法があります.この方法はstartActivity ForResult(Intent intent,int requestCode)です.
この方法は2つのパラメータを受信し,第1のパラメータはIntentであり,第2のパラメータは要求コードである.
例:
(一)MainActivityとactivityの作成main.xmlレイアウトファイル
簡単なレイアウトファイル:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        >
<LinearLayout
android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
<TextView
android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="  "
        />
<EditText
android:id="@+id/nameedittext"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />
</LinearLayout>

<Button
android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="  "
        />
<TextView
android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
</LinearLayout>

MainActivity.JAvaコード
public class MainActivity extends Activity {


    EditText nameEditText;
    Button button;
    TextView titleTextView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        nameEditText=(EditText)findViewById(R.id.nameedittext);
        button=(Button)findViewById(R.id.button1);
        titleTextView=(TextView)findViewById(R.id.title);
        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                Intent intent=new Intent(MainActivity.this,BackActivity.class);
                intent.putExtra("name", nameEditText.getText().toString());
                startActivityForResult(intent, 1);  //      intent    
            }
        });
    }
    @Override
    public void onActivityResult(int requestcode,int resultcode,Intent intent)
    {
        switch(requestcode)
        {
            case 1:
                if(resultcode==RESULT_OK)
                {
                    titleTextView.setText(intent.getStringExtra("title"));
                }
        }

    }

}

MainActivityではまずstartActivity ForResult関数に2つのパラメータを入力し、他のページにジャンプします.またonActivity Result関数も書き換えられ、関数のパラメータはrequestCode(リクエストコード)、resultCode(結果コード)、Intentであり、requestCodeはstartActivityで送信された2番目のパラメータと一致し、結果コードは次のActivityで返される結果コードである.
(二)BackActivityとback_の作成activity.xml
レイアウトファイル:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

<EditText
android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
<Button
android:id="@+id/finish"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="  "
        />
</LinearLayout>

BackActivity.JAvaコード:
public class BackActivity extends Activity{
    Button button;
    EditText editText;
    @Override
    public void onCreate(Bundle savedInstacedBundle)
    {
        super.onCreate(savedInstacedBundle);
        setContentView(R.layout.back_activity);
        button=(Button)findViewById(R.id.finish);
        editText=(EditText)findViewById(R.id.content);
        Intent intent=getIntent();
        Bundle bundle=intent.getExtras();
        final String nameString=bundle.getString("name");
        button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                Intent intent=new Intent();
                intent.putExtra("title",nameString+editText.getText().toString());
                setResult(RESULT_OK, intent);//        Intent
                finish();//   Activity
            }
        });
    }
}

setResult関数は結果コードとintentを設定してMainActivityのonActivity Result()関数に戻り、データを取得します.