在活动A中,我有一个listView和用于意图活动B的操作栏图标。如果按下listView,它将把所有值从A发送到B并显示在editText上。
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> listView, View view, final int position, long id) {
Expenses o = (Expenses) obj.getItem(position);
String day = o.getDate(); // 4 Dec 2016
String[] split = day.split("\\s+");
String date= split[1]; // 4
Intent intent = new Intent(QuickExpenses.this,AddExpenses.class);
intent.putExtra("date",date);
intent.putExtra("month", month); // Dec 2016
startActivity(intent);
}
});
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_add_task:
Intent intent = new Intent(QuickExpenses.this, AddExpenses.class);
intent.putExtra("month", month); // Dec 2016
startActivityForResult(intent, PROJECT_REQUEST_CODE);
return true;
}
}
活动B
活动B有一个editText。按下editText时,将弹出datePickerDialog,供用户选择日期。
EditText date;
String month;
date = (EditText) findViewById(R.id.date);
month = getIntent().getStringExtra("month");
if(getIntent().getExtras()!=null) { //if has value pass from A (listView pressed)
String mDay = getIntent().getExtras().getString("date");
date.setText(mDay + "" + month);
}
因此,如果按下列表视图,它将在EditText
日期显示2016年12月5日。但是问题是当我单击活动A中的图标时,它显示null Dec 2016
。我想使用editText
和date.setText("")
清除date.getText().clear();
,但它仍显示null Dec 2016
。
我想要日期
editText
如果活动A按下但不显示任何内容null Dec 2016
。
您的代码的问题是在两种情况下您的传递意图,因此这是它进入此块的原因
if(getIntent().getExtras()!=null) { //if has value pass from A (listView pressed)
String mDay = getIntent().getExtras().getString("date");
date.setText(mDay + "" + month);
}
因此只需使用以下代码更改您的if条件
if(getIntent().getExtras().getString("date")!=null) { //if has value pass from A (listView pressed)
String mDay = getIntent().getExtras().getString("date");
date.setText(mDay + "" + month);
}
else {
date.setText("");
}
希望这会有所帮助
检查下面的代码:
if(getIntent().getExtras()!=null) { //if has value pass from A (listView pressed)
String mDay = getIntent().getStringExtra("date");
if(!TextUtils.isEmpty(mDay) && !TextUtils.isEmpty(month)){
date.setText(mDay + "" + month);
}
}
在单击活动A时,删除intent.putExtra(“ month”,month);在图标上单击,在活动B中,请尝试下面的代码
date = (EditText) findViewById(R.id.date);
month = getIntent().getStringExtra("month");
mDay = getIntent().getStringExtra("date");
if(getIntent().getExtras()=null) { //if has value pass from A (listView pressed)
date.setText("");
}
尝试一下
尝试以下代码段!
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_add_task:
Intent intent = new Intent(QuickExpenses.this, AddExpenses.class);
intent.putExtra("date", ""); // Dec 2016
intent.putExtra("month", month); // Dec 2016
startActivityForResult(intent, PROJECT_REQUEST_CODE);
return true;
}
}
希望对您有帮助!
根据您的代码,当您单击操作栏中的图标时,会使用意图发送一些值(可变月份,即可能保留的值为2016年12月)
删除
intent.putExtra("month", month); // Dec 2016
来自
onOptionsItemSelected
您必须从列表视图或图标中检查意图。从代码中可以检查mDay是否为空。如果mDay为空,则按下表单图标。