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 つの試みでしたが、失敗しました。この状況での助けは素晴らしいでしょう。ありがとう!