将大量数据从一个活动发送到另一个活动?

时间:2013-08-27 05:38:39

标签: android

朋友我有2个文本框... 用户必须填写所有文本框,然后按提交按钮。 按下提交按钮时,应开始新活动,并在那里显示所有填充的信息。 我使用intent尝试了它,但第二个活动只显示了一个文本框的内容。 请告诉我该怎么办? 提前致谢

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);

}

}

这是我的第二个活动

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)的文本...

怎么做???

10 个答案:

答案 0 :(得分:6)

假设你有三个分别带有id的edt1,edt2,edt3的EditText和一个提交按钮和两个活动,即MainActivity,其中所有三个标签和一个按钮都存在,另一个活动有三个TextView,分别是id为txt1,txt2,txt3 ,你必须在那里显示信息。

您可以通过以下方式使用意图将信息从一个活动发送到另一个活动:

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

其中Key是您可以从中发送数据的任何字符串,数据是您要发送的信息。请记住,此密钥需要在另一个活动中接收数据。

然后在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字段是最佳做法,而不是尝试手动保持它们同步。

答案 1 :(得分:4)

尝试此操作传递值。

Intent i = new Intent(this, ActivityTwo.class);
i.putExtra("Value1", "textbox1");
i.putExtra("Value2", "textbox2"); 
i.putExtra("Value3", "textbox3");
StartActivity(i);

接收活动

Intent in = getIntent();
String tv1= in.getExtras().getString("Value1");
String tv2= in.getExtras().getString("Value2");
String tv3= in.getExtras().getString("Value3");

答案 2 :(得分:3)

获取文本框的值并将其存储到某些变量ex val1val2,然后使用

Intent intent = new Intent(getBaseContext(), SecondActivity.class);
intent.putExtra("Textbox_val1", val1);
intent.putExtra("Textbox_val2", val2);
startActivity(intent)

在第二个活动中写

Bundle extras = getIntent().getExtras(); 
if(extras !=null) {
String value1 = extras.getString(Textbox_val1);
String value2 = extras.getString(Textbox_val2);
}

答案 3 :(得分:3)

  1. 使用putExtra()的{​​{1}},并使用不同文本框中的不同键
  2. 在另一个活动中,使用Intent,并通过您的密钥检索信息

答案 4 :(得分:3)

您可以使用Intent.putExtra方法执行此操作。

例如:

Intent intent = new Intent(this, MyOtherActivity.class);
intent.putExtra("key", "value");
// ... etc

目标活动的OnResumeOnStart

Intent intent = getIntent();
String value = intent.getStringExtra("key");
// ... etc

请参阅:

http://developer.android.com/reference/android/content/Intent.html#putExtra(java.lang.String,java.lang.String)

http://developer.android.com/reference/android/content/Intent.html#getStringExtra(java.lang.String)

答案 5 :(得分: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();

答案 6 :(得分:1)

使用ArrayList从一个活动向另一个活动发送大量数据的最佳方法之一。

这里有一个示例将完整的arraylist数据发送到其他活动。

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

我希望这会对你有所帮助。

答案 7 :(得分:0)

Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra("FirstTxt", textbox1);
intent.putExtra("SecondTxt", textbox2); 
intent.putExtra("ThirdTxt", textbox3);
StartActivity(intent); 

答案 8 :(得分:0)

and for receiving     ``                                                     extrasIntent in = getIntent();
    String first= in.getExtras().getString("FirstTxt");
    String second= in.getExtras().getString("SecondTxt");
    String third= in.getExtras().getString("ThirdTxt");                         it worked for me

答案 9 :(得分:0)

很简单

  

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

     

i.putExtra( “变量名”, “VARIABLE_VALUE”); startActivity(ⅰ);

它启动第二个活动,您可以从包中找到相同的数据

  

Bundle extras = getIntent()。getExtras();

     

if(extras!= null){String value =   extras.getString( “变量名”); }