意図(Intent)説明2:アンドロイド使用意図(Intent)データを転送し、結果を返す
5442 ワード
今日は、Androidの使用意図(Intent)がデータを転送し、結果を返す使用について説明します.
次の例は加算された計算機で、加算された数と加算された数を書き込み、ボタンをクリックして別のページにジャンプし、2つの数をこのページに転送します.このページに計算結果を記入し、ボタンをクリックして最初のページに戻り、結果を最初のページに戻します.
全体の構想:第1の活動から第2の活動に2つのデータを伝達し、活動を開く方式で要求マークを設定する.第2のアクティビティは、この2つのデータを受信し、計算された・結果を第1のアクティビティに渡し、結果タグを設定し、第2のアクティビティを閉じる.2番目のアクティビティがなくなるにつれて、1番目のアクティビティがユーザの前に表示され、1番目のアクティビティは要求タグと結果タグの正確性を判断した後に結果データを設定する.
activity_main.xmlファイル:
activity_other.xmlファイル:
MainActivity.JAvaファイル:
OtherActivity.JAvaファイル:
次の例は加算された計算機で、加算された数と加算された数を書き込み、ボタンをクリックして別のページにジャンプし、2つの数をこのページに転送します.このページに計算結果を記入し、ボタンをクリックして最初のページに戻り、結果を最初のページに戻します.
全体の構想:第1の活動から第2の活動に2つのデータを伝達し、活動を開く方式で要求マークを設定する.第2のアクティビティは、この2つのデータを受信し、計算された・結果を第1のアクティビティに渡し、結果タグを設定し、第2のアクティビティを閉じる.2番目のアクティビティがなくなるにつれて、1番目のアクティビティがユーザの前に表示され、1番目のアクティビティは要求タグと結果タグの正確性を判断した後に結果データを設定する.
activity_main.xmlファイル:
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<EditText
android:id="@+id/one"
android:layout_height="wrap_content"
android:layout_width="80dp"
/>
<TextView
android:id="@+id/one1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+" />
<EditText
android:id="@+id/two"
android:layout_height="wrap_content"
android:layout_width="80dp"
/>
<TextView
android:id="@+id/two2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="=" />
<EditText
android:id="@+id/result"
android:layout_height="wrap_content"
android:layout_width="80dp"
/>
</LinearLayout>
<Button
android:id="@+id/button"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text=" "
/>
</LinearLayout>
activity_other.xmlファイル:
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<EditText
android:id="@+id/edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=" "
/>
MainActivity.JAvaファイル:
private Button button;
private static final int REQUESTCODE=1;
private EditText one,two,result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button)findViewById(R.id.button);
one=(EditText)findViewById(R.id.one);
two=(EditText)findViewById(R.id.two);
result=(EditText)findViewById(R.id.result);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
int a=Integer.parseInt(one.getText().toString());
int b=Integer.parseInt(two.getText().toString());
Intent intent=new Intent(MainActivity.this,OtherActivity.class);
intent.putExtra("a", a);
intent.putExtra("b", b);
// activity ,
startActivityForResult(intent, REQUESTCODE);//
}
});
}
// activity
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==2){// (2)
if(requestCode==REQUESTCODE){
int three=data.getIntExtra("three", 0);
result.setText(String.valueOf(three));
}
}
}
OtherActivity.JAvaファイル:
private Button button;
private TextView textView;
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_other);
button=(Button)findViewById(R.id.button);
textView=(TextView)findViewById(R.id.msg);
editText=(EditText)findViewById(R.id.edit);
Intent intent=getIntent();
int a=intent.getIntExtra("a", 0);
int b=intent.getIntExtra("b", 0);
textView.setText(a+"+"+b+"="+"?");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent=new Intent();// , three
int three=Integer.parseInt(editText.getText().toString());
intent.putExtra("three", three);
// intent ,setResult
setResult(2,intent);// ,
finish();// activity ,
}
});
}
注意:新しく作成したactivityを登録することを忘れないでください.