editText.setText(“”)无法正常工作

时间:2016-12-22 06:35:34

标签: android listview android-edittext clear

在Activity 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

  

如果图标活动A已按下但未按下,我希望日期editText不显示   null Dec 2016

6 个答案:

答案 0 :(得分: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("");
      }

希望这会有所帮助

答案 1 :(得分: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);
    }

            }

答案 2 :(得分:1)

点击活动A删除intent.putExtra(&#34;月&#34;,月);点击图标点击,然后在活动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("");
            }

试试这个

答案 3 :(得分: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;
    }
}

希望这对你有帮助!

答案 4 :(得分:0)

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

除去

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

来自onOptionsItemSelected

答案 5 :(得分:0)

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

public void displayPopupWindow() {
    View layout = getLayoutInflater().inflate(R.layout.popup,null);
    final PopupWindow popup = new PopupWindow(this);
    popup.setContentView(layout);
    popup.setOutsideTouchable(true);
    popup.setFocusable(true);
    popup.setWidth(400);
    popup.setHeight(580);
    popup.showAtLocation(layout, Gravity.CENTER, 0, 0);
    popup.setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
    Button button = (Button) layout.findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View layout) {
            popup.dismiss();
        }
    });

}