我对Android开发很新,我在为联系人编写代码时遇到问题。我的问题是:
我有两个activity
班级(main_activity
和addcontact_activity
),main_activity
----一个button
,listview
和一个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);
}
}
}
答案 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
}