0

友達 私には 2 つのテキスト ボックスがあります... ユーザーはすべてのテキスト ボックスに入力してから送信ボタンを押す必要があります。送信ボタンを押すと、新しいアクティビティが開始され、入力されたすべての情報がそこに表示されます。インテントを使用して試してみましたが、2 番目のアクティビティでは 1 つのテキスト ボックスのコンテンツのみが表示されます。何をすべきか教えてください。前もって感謝します

package com.example.myfirstapp;

public class MainActivity extends Activity {

static final String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}
public void sendMessage(View view)
{
    Intent intent = new Intent(this, DisplayMessageActivity.class); 

    EditText editText = (EditText) findViewById(R.id.edit_message);
    EditText editText1 = (EditText) findViewById(R.id.edit_message2);
    String message = editText.getText().toString();
    String message2 = editText1.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    intent.putExtra(EXTRA_MESSAGE, message2);
    startActivity(intent);

}

}

これが私の2番目の活動です

package com.example.myfirstapp;

public class DisplayMessageActivity extends Activity {

enter code here

@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_display_message);

    // Get the message from the intent

    Intent intent = getIntent();

    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

    // Create the text view
    TextView textView = new TextView(this);
    textView.setTextSize(40);
    textView.setText(message);

    // Set the text view as the activity layout
    setContentView(textView);
    // Show the Up button in the action bar.

   String message2 = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    TextView textView1 = new TextView(this);
    textView1.setTextSize(40);
    textView1.setText(message2);
    setContentView(textView1);
    setupActionBar();
}

/**
 * Set up the {@link android.app.ActionBar}, if the API is available.
 */
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void setupActionBar() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        getActionBar().setDisplayHomeAsUpEnabled(true);
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.display_message, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        // This ID represents the Home or Up button. In the case of this
        // activity, the Up button is shown. Use NavUtils to allow users
        // to navigate up one level in the application structure. For
        // more details, see the Navigation pattern on Android Design:
        //
        // http://developer.android.com/design/patterns/navigation.html#up-vs-back
        //
        NavUtils.navigateUpFromSameTask(this);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

}

2 番目のテキスト フィールド (メッセージ 2) のテキストのみを取得しています...

何をすべきか???

4

10 に答える 10

6

それぞれ id の edt1、edt2、edt3 を持つ 3 つの EditText と送信ボタン、2 つのアクティビティ、つまり 3 つのラベルとボタンがすべて存在する MainActivity と、id の txt1、txt2、txt3 を持つ 3 つの TextView がある別のアクティビティがあるとします。情報を表示する必要があります。

次の方法でインテントを使用して、あるアクティビティから別のアクティビティに情報を送信できます。

intent.putExtra("Key", "Data");

ここで、Key はデータを送信できる任意の文字列で、data は送信する情報です。このキーは、別のアクティビティでデータを受け取るために必要であることを忘れないでください。

次に、 MainActivity で最初にビューを見つけてから、送信ボタンをクリックしてリスナーを次のようにする必要があります。

btnSubmit.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            Intent intent = new Intent(TestActivity.this, AnotherActivity.class);
            intent.putExtra("Name", edt1.getText().toString());
            intent.putExtra("Phone", edt2.getText().toString());
            intent.putExtra("Age", edt3,getText().toString())
            startActivity(intent);
        }
    });

次に、AnotherActivity で、定義したすべての TextView のビューを検索し、MainActivity によって送信されたデータを取得して textview に設定する必要があります。次のようにする必要があります。

txt1.setText(getIntent.getStringExtra("Name"));
txt2.setText(getIntent.getStringExtra("Phone"));
txt3.setText(getIntent.getStringExtra("Age"));

キーは、データの送信中に指定されたものと同じでなければならないことに注意してください。public static final Stringしたがって、それらを手作業で同期させようとするのではなく、クラスのリソース文字列またはフィールドとして宣言することをお勧めします。

于 2013-08-27T06:03:03.087 に答える
1

便利な方法として共有プリファレンスがあります。これにより、任意のアクティビティからデータを作成、編集、削除したり、任意のアクティビティからデータをフェッチしたりできます。

データを保存するアクティビティから共有設定を作成または編集するには:

String share_pref_file = "your_file_name";      
SharedPreferences prefs1 = getSharedPreferences(
        share_pref_time_file, Context.MODE_PRIVATE);
SharedPreferences.Editor editor1 = prefs1.edit();
editor1.putString("your_data", data); //data is your variable
editor1.commit();

データが必要なアクティビティからデータをフェッチするには:

String share_pref_file = "your_file_name";
SharedPreferences prefs = getSharedPreferences(share_pref_file,
    Context.MODE_PRIVATE);
String strJson = prefs.getString("your_data", "");

削除するには:

String share_pref_file = "your_file_name";
SharedPreferences prefs1 = getSharedPreferences(
            share_pref_file, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = prefs1.edit();
    editor.remove(share_pref_file);
    editor.clear();
    editor.commit();
于 2013-08-27T05:42:55.167 に答える
1

あるアクティビティから別のアクティビティに ArrayList を使用して大量のデータを送信する最良の方法の 1 つです。

これは、完全な arraylist データを他のアクティビティに送信する 1 つの例です。

http://prashantandroid.blogspot.in/2013/08/passing-arraylist-from-one-activity-to.html

これがお役に立てば幸いです。

于 2013-08-27T06:19:44.170 に答える
0

とてもシンプルです

Intent i = new Intent(this, NewActivity.class);

i.putExtra("変数名","変数値"); startActivity(i);

2番目のアクティビティを開始し、バンドルから同じデータを見つけることができます

バンドル エクストラ = getIntent().getExtras();

if (extras != null){ 文字列値 = extras.getString("変数名"); }

于 2015-04-17T12:09:58.530 に答える
0
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra("FirstTxt", textbox1);
intent.putExtra("SecondTxt", textbox2); 
intent.putExtra("ThirdTxt", textbox3);
StartActivity(intent); 
于 2015-04-17T11:55:05.773 に答える