2

2 つの文字列値を返す必要があるアクティビティを呼び出す startActivityForResult メソッドを使用するメイン アクティビティがあります。1つを返すように機能していますが、ここにあるすべてのチュートリアルと他の質問を読んでも、2つの値を返すようには見えません。以下は私のコードです。

ここで 2 番目のアクティビティを開始します。

Button button = (Button) findViewById(R.id.add);
        button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                startActivityForResult(addM, 1);    
            }

        });

これが開始するアクティビティです。titleField (現在は機能しています) と yearField にあるテキストを返す必要があります。

public class AddMovie extends Activity {

String movieTitle, movieYear;
EditText titleField, yearField;
Button save;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_movie);

    titleField = (EditText) findViewById(R.id.titleField);
    yearField = (EditText) findViewById(R.id.yearField);

    save = (Button) findViewById(R.id.saveMovie);

    save.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            Intent data = new Intent();
            data.setData(Uri.parse(titleField.getText().toString()));
            setResult(RESULT_OK, data); 
            //data.setData(Uri.parse(yearField.getText().toString()));
            //setResult(RESULT_OK, data);
            finish();

        }
    });
}



}

結果を受け取るメインクラスのメソッドは次のとおりです

public void onActivityResult(int requestCode, int resultCode, Intent data)
        {
            if(requestCode == request_Code)
            {
                if(resultCode == RESULT_OK)
                {
                    tempTitle = data.getData().toString();
                    //tempYear =       data.getStringExtra("movieYear");
                    Toast.makeText(this, tempTitle, Toast.LENGTH_SHORT).show(); 
                    dbAddMovie(tempTitle, tempYear);

                }
            }

        }

コメント アウトされたコードは、複数の値を受け取るようにするための 1 つの試みでしたが、失敗しました。この状況での助けは素晴らしいでしょう。ありがとう!

4

6 に答える 6

8

次のようなものを使用する必要があります。

Intent returnIntent = new Intent();
returnIntent.putExtra("title",titleField.getText().toString());
returnIntent.putExtra("year",yearField.getText().toString());
setResult(RESULT_OK,returnIntent);     
finish(); 

そして、あなたの主な活動である onActivityResult:

tempTitle = data.getStringExtra("title");
tempYear =  data.getStringExtra("year");
于 2013-08-01T14:09:25.523 に答える
0

putExtraでメソッドを使用できますIntent

data.putExtra("title", movieTitle);
data.putExtra("year", movieYear);

次に、開いたアクティビティで、次のようにこのデータを取得できます。

String title, year;
Intent data = getIntent();
if (data != null) {
    title = data.getExtras().getString("title");
    year = data.getExtras().getString("year");
}
于 2013-08-01T14:07:43.907 に答える
0

新しいインテントを作成してから、2 つの変数を追加できます

 Intent i = new Intent(getApplicationContext(), asd8.as.hwapp.timemonday.class);
            i.putExtra("username",username);
            i.putExtra("password", password);

            startActivity(i); 

そして、新しいアクティビティで情報を取得します。

public void getInformation(){

    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        username = extras.getString("username");
        password = extras.getString("password");
    }
} 
于 2013-08-01T14:09:44.207 に答える