0

OK、タイトルはそれほど多くのタイトルではありませんが、私を判断しないでください。私はウェブサイトを検索しましたが、他にもたくさんありますが、正しい答えが見つからないようです。問題はこれです:

1つのメインアクティビティ(アクティビティA)を持つAndroidアプリを作成しました。これにより、別のアクティビティBが開き、データを入力します。そのデータを最初のアクティビティに転送してから、データベースに記録する必要があります。

私はこのようにします:

活動A:

-新しいインテントを呼び出してから、startActivityForResult()メソッドを呼び出します。

2番目のアクティビティで保存ボタンを押すと、これが実行されます。

btnSave.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                Intent i = new Intent(getApplicationContext(), MainActivity.class);

                i.putExtra("date", dateText.getText().toString());
                i.putExtra("time", timeText.getText().toString());
                i.putExtra("text", taskText.getText().toString());
                setResult(100);
                startActivity(i);

            }
        });

最初のアクティビティ(メインアクティビティ)に戻ると、このメソッドが呼び出されます。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(resultCode==100)
{
            i = getIntent();
        String text = i.getStringExtra("text");
            String date = i.getStringExtra("date");
            String time = i.getStringExtra("time");
            Toast.makeText(this, text + "-" + date + "-" + time, Toast.LENGTH_LONG).show();
        }

        super.onActivityResult(requestCode, resultCode, data);
}       

トーストメッセージでは、null値のみが取得されます。これは、データが2番目のアクティビティから最初のアクティビティに転送されなかったことを意味します。誰かが私を助けてくれますか?ところで、データはデータベースに保存する必要がありますが、それは別の問題です、後で私のために物事を複雑にしないのに役立つかもしれない場合に備えて、私はちょうどそれを述べました。

よろしくお願いします:D

4

4 に答える 4

1

ボタン保存クリックリスナーではIntent、startActivity()で呼び出す必要はありません。こんな感じです

  Intent returnIntent = new Intent();
      returnIntent.putExtra("SelectedBook",book);
      setResult(RESULT_OK,returnIntent);        
      finish();

そしてonActivityResult()でデータを取得しますIntent data

この例を参照してください

于 2012-10-15T16:40:10.783 に答える
1

別のアクティビティからデータを取得する方法はたくさんありますが、

  1. あなたが使用しているもの、間違いは電話をかけずにリンクstartActivityを呼び出すだけですfinish();
  2. 静的変数を使用し、それらのパブリック文字列変数にデータを直接入力して、どこからでも取得できます。
  3. SharedPreferencesを使用し、onActivityResult リンクだけでなく、キー値を使用するだけで、保存されたデータをどこでも使用できます
于 2012-10-15T16:54:25.497 に答える
0

2番目のアクティビティでは、startActivityを呼び出しません。setResult(int)またはsetResult(int、Intent)を呼び出してから、finish()

最初のアクティビティでは、結果を取得します。

于 2012-10-15T16:41:24.980 に答える
0

2番目のアクティビティでこれを使用してみてください

Intent returnIntent = new Intent();
returnIntent.putExtra("SelectedBook",book);
returnIntent.putExtra("date", dateText.getText().toString());
returnIntent.putExtra("time", timeText.getText().toString());
returnIntent.putExtra("text", taskText.getText().toString());
setResult(RESULT_OK,returnIntent);        
finish();

そして最初のアクティビティで使用してみてください

data.getStringExtra("date"); 

同様に残り。

于 2012-10-15T16:48:10.480 に答える