将所有值从Listview A发送到B

问题描述 投票:0回答:6

在活动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。我想使用editTextdate.setText("")清除date.getText().clear();,但它仍显示null Dec 2016

我想要日期editText如果活动A按下但不显示任何内容 null Dec 2016

android listview android-edittext
6个回答
4
投票

您的代码的问题是在两种情况下您的传递意图,因此这是它进入此块的原因

 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("");
      }

希望这会有所帮助


2
投票

检查下面的代码:

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

            }

1
投票

在单击活动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("");
            }

尝试一下


0
投票

尝试以下代码段!

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

希望对您有帮助!


0
投票

根据您的代码,当您单击操作栏中的图标时,会使用意图发送一些值(可变月份,即可能保留的值为2016年12月)

删除

intent.putExtra("month", month); // Dec 2016

来自onOptionsItemSelected


0
投票

您必须从列表视图或图标中检查意图。从代码中可以检查mDay是否为空。如果mDay为空,则按下表单图标。

© www.soinside.com 2019 - 2024. All rights reserved.