2011-04-30 11 views
0

私はアンドロイドで私のアプリに少し大きな問題があります。私は2つのアクティビティを持っています:アクティビティ1とアクティビティ2。 Activity1にはTextViewとButtonがあり、Activity2にはEditTextとButtonがあります。 Activity1から私はAcvity2に行き、EditTextのテキストをActivity2からActivity1に送信したいと思います。私はコード内の順序がわからないので強制終了します。私は何をすべきか?おかげactivity2からactivity1への文字列の送信方法は?

ここでは私のコードです:あなたのコードで


import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class Activity1 extends Activity { 
    TextView txt; 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     txt = (TextView) findViewById(R.id.txt); 

     Button next=(Button)findViewById(R.id.btn); 
     next.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       Intent intent = new Intent(Activity1.this,Activity2.class); 
       startActivityForResult(intent, 0); 
      } 

     }); 
    } 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class Activity2 extends Activity { 
    EditText txt2; 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main2); 

     txt2 = (EditText)findViewById(R.id.txt2); 
     final Bundle bundle = new Bundle(); 
     String x=txt2.getText().toString(); 
     bundle.putString("param",x); 
     Button btn2=(Button)findViewById(R.id.btn2); 
     btn2.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       Intent intent = new Intent(Activity2.this,Activity1.class); 
       intent.putExtra(bundle) 
       finish(); 

      } 

     }); 
      } 
}

答えて

0

一つの問題は、あなたが第二の活動の結果を扱う何も持っていないということです。 (最初のアクティビティにはonActivityResultはありません)

The notepad tutorialには、2番目のアクティビティを呼び出して結果を得るという例があります。

0

In Activity1 @override onActivityResult。

とIn Activity2と書いてください。

txt2 = (EditText)findViewById(R.id.txt2); 
    final Bundle bundle = new Bundle(); 
    String x=txt2.getText().toString(); 
    bundle.putString("param",x); 
    Button btn2=(Button)findViewById(R.id.btn2); 
    btn2.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      Intent intent = new Intent(); 
      intent.putExtra("param",x); 
      setResult(RESULT_OK, intent); 
      finish(); 

     } 
    }); 
+0

私はこれを置く:@Override \tは無効onActivityResult(int型requestCode、int型のresultCode、テントの意図){ \t super.onActivityResult(requestCode、resultCodeが、意図)保護されました。 \tバンドルb = getIntent()。getExtras(); \t \tテキスト= b.getString( "param"); \t txt.setText(text);}私はまだ強制終了しています。私はこの機能に何を置くべきですか? – Gaby

+0

答えが見つかりました。ご助力ありがとうございます。 – Gaby

+0

2つのonActivityResult()を同じアクティビティで使用できますか? – Gaby

0

In Activity1 @override onActivityResult。

とIn Activity2と書いてください。

txt2 =(EditText)findViewById(R.id.txt2); Activity1で

final Bundle bundle = new Bundle(); 
String x=txt2.getText().toString(); 
Button btn2=(Button)findViewById(R.id.btn2); 
btn2.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View view) { 
     Intent intent = new Intent(); 
     intent.putExtra("param",x); 
     setResult(RESULT_OK, intent); 
     finish(); 
    }