意図(Intent)説明2:アンドロイド使用意図(Intent)データを転送し、結果を返す

5442 ワード

今日は、Androidの使用意図(Intent)がデータを転送し、結果を返す使用について説明します.
次の例は加算された計算機で、加算された数と加算された数を書き込み、ボタンをクリックして別のページにジャンプし、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を登録することを忘れないでください.