如何从其他活动中获取数据..在android ..?

时间:2014-03-26 04:56:27

标签: android

我对Android开发很新,我在为联系人编写代码时遇到问题。我的问题是:

我有两个activity班级(main_activityaddcontact_activity),main_activity ----一个buttonlistview和一个EditText,如果我点击button,那么它会重定向到第二个活动,在第二个活动中 - 三个editText(用于姓名,电话号码和电子邮件)和两个button s(保存并清除)

在第一个活动中一切正常,但是当我点击第二个活动中的保存button时,它会链接到Main_activity,但是从第二个活动发送到第一个活动的数据不会显示在main_activity中{1}}所以请帮忙!

代码Main_activity

EditText t;
Button b;
ListView lv;
ArrayList <String> al;
ArrayAdapter<String> ad;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    t=(EditText)findViewById(R.id.editText1);
    b=(Button)findViewById(R.id.button1);
    lv=(ListView)findViewById(R.id.listView1);
    b.setOnClickListener(this);



    al=new ArrayList<String>();
    ad=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,al);
    lv.setAdapter(ad);


}

@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;
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub

    if(v.getId()==R.id.button1){
        Intent link = new Intent(getApplicationContext(),addcontact.class);
        startActivity(link);
    }
}


@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();

    Intent Info = getIntent();
    al.add(Info.getStringExtra("name").toString());
    ad.notifyDataSetChanged();

}

}

代码addContact_activity

TextView name,phone,email;
Button save, reset;
EditText n,p,e;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.addcon);

    name=(TextView)findViewById(R.id.textView1);
    phone=(TextView)findViewById(R.id.textView2);
    email=(TextView)findViewById(R.id.textView3);

    save=(Button)findViewById(R.id.save);
    save.setOnClickListener(this);
    reset=(Button)findViewById(R.id.button2);

    n=(EditText)findViewById(R.id.editText1);
    p=(EditText)findViewById(R.id.editText2);
    e=(EditText)findViewById(R.id.editText3);


}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
        if(v.getId()==R.id.save){
        Intent send = new Intent(getApplicationContext(),MainActivity.class);
        send.putExtra("name", n.getText().toString());
        startActivity(send);

    }
}

}

5 个答案:

答案 0 :(得分:0)

试试这个..

OnCreate()

中执行以下代码
Intent Info = getIntent();
al.add(Info.getStringExtra("name").toString());
ad.notifyDataSetChanged();

<强>代码

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

    t=(EditText)findViewById(R.id.editText1);
    b=(Button)findViewById(R.id.button1);
    lv=(ListView)findViewById(R.id.listView1);
    b.setOnClickListener(this);



    al=new ArrayList<String>();
    ad=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,al);
    lv.setAdapter(ad);
    Intent Info = getIntent();
    if(Info.hasExtra("name")){
      al.add(Info.getStringExtra("name").toString());
      ad.notifyDataSetChanged();
    }
}

答案 1 :(得分:0)

使用getInent()。getExtras()来获取包。 或getIntent()。getExtra();

答案 2 :(得分:0)

在onResume()上添加此代码,而不是暂停

Intent Info = getIntent();
    al.add(Info.getStringExtra("name").toString());
    ad.notifyDataSetChanged();

答案 3 :(得分:0)

在您的情况下,您使用activity将数据发送给其他Intent,并正确地通过以下方式发送给:{/ p>

 Intent send = new Intent(getApplicationContext(),MainActivity.class);
            send.putExtra("name", n.getText().toString());
            startActivity(send);  

现在,为了检索数据,您需要从Intent MainActivity中获取数据:

getIntent().getStringExtra("name");  

将其放在onCreate()的{​​{1}}中。

在读取数据之前插入空检查... MainActivity因此它不会抛出NPE 类似的东西:

Intent

了解if(getIntent()!=null || getIntent().getExtras()!=null) 的更多内容:

http://developer.android.com/reference/android/content/Intent.html
What is an Intent in Android?

答案 4 :(得分:0)

Intent i = new Intent(this, ActivityTwo.class);//this your current class
startActivity(i); 
to pass a value in class 1

Intent i = new Intent(this, ActivityTwo.class);
i.putExtra("Value1", "This value one for ActivityTwo ");
i.putExtra("Value2", "This value two ActivityTwo"); 

    // to get values from ActivityTwo.class

Bundle extras = getIntent().getExtras();
if (extras == null) {
  return;
}
// get data via the key
String value1 = extras.getString(Intent.EXTRA_TEXT);
if (value1 != null) {
  // do something with the data
}