【问题标题】:Sending all the value from Listview A to B将所有值从 Listview A 发送到 B
【发布时间】:2016-12-22 06:35:34
【问题描述】:

在 Activity A 中,我有一个 listView 和一个用于向 Activity 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 日。但问题是当我单击 Activity A 中的图标时,它显示 null Dec 2016 。我想使用date.setText("")date.getText().clear(); 清除editText,但它仍然显示null Dec 2016

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

【问题讨论】:

    标签: android listview android-edittext


    【解决方案1】:

    你的代码的问题是你在这两种情况下的传递意图,所以这就是它进入这个块的原因

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

    希望这会有所帮助

    【讨论】:

    • 你可以让它更简单,只需删除其他也不需要的东西
    • 但我需要 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);
        }
    
                }
    

    【讨论】:

    • 我想要日期 editText 如果图标活动 A 被按下,则不显示任何内容。
    • date 在您的代码中是 EditText。我对么?你能详细说明你的问题吗?
    • 是的,date 是 EditText
    • 你试过我的代码了吗?我认为它会为你工作。您不应该在 2016 年 12 月获得 null。
    • 欢迎 :) TextUtils 类非常有用 :)
    【解决方案3】:

    点击 Activity A 时删除 intent.putExtra("month", month);点击图标并在 Activity 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("");
                }
    

    试试这个

    【讨论】:

      【解决方案4】:

      试试下面的 sn-p!

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

      希望对您有所帮助!

      【讨论】:

      • 这不是解决方案!您只需为日期传递一个空值
      • 我想要日期 editText 如果图标活动 A 被按下,则不显示任何内容。
      【解决方案5】:

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

      删除

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

      来自onOptionsItemSelected

      【讨论】:

      • 我需要它,因为在日期editText,我只希望用户选择日期
      【解决方案6】:

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

      if(getIntent().getExtras()!=null) { 
            String month = getIntent().getStringExtra("month");
            String mDay = getIntent().getExtras().getString("date");
            if(!TextUtils.isEmpty(mDay)
                date.setText(mDay + "" + month);
            else // mDay will empty from icon click.
                date.setText("");
      
       }
      

      【讨论】:

      • 请添加文字说明,不要只提供代码sn-p。
      猜你喜欢
      • 1970-01-01
      • 2016-02-17
      • 1970-01-01
      • 2011-09-23
      • 1970-01-01
      • 2017-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多