Android入門のActivity返却データ(startActivity ForResult)
12342 ワード
紙の上で得たのは結局浅く感じて、この事は決してお辞儀をしなければならないことを知っています--陸遊
用水路を尋ねるとそれはこのようにはっきりしていて,源の活水があるために来た--朱熹
Androidには他のActivityを起動し、Activity破棄時に前のActivityにデータを戻す方法があります.この方法はstartActivity ForResult(Intent intent,int requestCode)です.
この方法は2つのパラメータを受信し,第1のパラメータはIntentであり,第2のパラメータは要求コードである.
例:
(一)MainActivityとactivityの作成main.xmlレイアウトファイル
簡単なレイアウトファイル:
MainActivity.JAvaコード
MainActivityではまずstartActivity ForResult関数に2つのパラメータを入力し、他のページにジャンプします.またonActivity Result関数も書き換えられ、関数のパラメータはrequestCode(リクエストコード)、resultCode(結果コード)、Intentであり、requestCodeはstartActivityで送信された2番目のパラメータと一致し、結果コードは次のActivityで返される結果コードである.
(二)BackActivityとback_の作成activity.xml
レイアウトファイル:
BackActivity.JAvaコード:
setResult関数は結果コードとintentを設定してMainActivityのonActivity Result()関数に戻り、データを取得します.
用水路を尋ねるとそれはこのようにはっきりしていて,源の活水があるために来た--朱熹
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()関数に戻り、データを取得します.