如何在Edittext中显示这两个数据而不丢失其中一个?

时间:2017-07-06 20:27:34

标签: java android

我在MainActivity中有两个Edittexts:etFrometTo。 点击后etFrom转到ListFrom活动,etTo转换为ListTo活动。ListFromListTo活动包含Listview,选择项目后返回主要活动并在edittexts中显示结果。我使用MainActivity.putExtra("To",v);etTo.setText(getIntent().getStringExtra("To"));从活动中获取数据。

点击第一个edittext后,从Listview中选择一个项目并返回到Main Activity,当我对第二个edittext执行相同操作时,第一个edittext变为空。当我第一次做第二次时,第二次变空。First Second

ListTo代码

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list_to);


    etSearchTo=(EditText) findViewById(R.id.etSearchTo);
    listViewTo=(ListView) findViewById(R.id.listViewTo);


    initList();
    listViewTo.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            String v="";
            Intent intent=new Intent(ListTo.this,SearchRide.class);
            switch (position) {
                case 0:
                    v = items[0];
                    break;
                case 1:
                    v = items[1];
                    break;
                case 2:
                    v = items[2];
                    break;
                case 3:
                    v = items[3];
                    break;
                case 4:
                    v = items[4];
                    break;
                case 5:
                    v = items[5];
                    break;
            }

            intent.putExtra("To",v);
            startActivity(intent);
        }
    });

ListFrom Code

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list_from);

    listView=(ListView) findViewById(R.id.listviewFrom);
    editText=(EditText) findViewById(R.id.etsearchFrom);





    initList();
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            String v="";
            Intent intent=new Intent(ListFrom.this,SearchRide.class);
            switch (position) {
                case 0:
                    v = items[0];
                    break;
                case 1:
                    v = items[1];
                    break;
                case 2:
                    v = items[2];
                    break;
                case 3:
                    v = items[3];
                    break;
                case 4:
                    v = items[4];
                    break;
                case 5:
                    v = items[5];
                    break;
            }

            intent.putExtra("From",v);
            startActivity(intent);


        }
    });

SearchRide作为主要活动

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_search_ride);





    etDate=(EditText) findViewById(R.id.etDate);
    TextView tFrom=(TextView) findViewById(R.id.tFrom);
    TextView tTo=(TextView) findViewById(R.id.tTo);
    etFrom=(EditText) findViewById(R.id.etFrom);
    etTo=(EditText) findViewById(R.id.etTo);
    Button bSearch=(Button) findViewById(R.id.bSearch);
    ImageView iplussign=(ImageView) findViewById(R.id.iplussign);
    ImageView iminussign=(ImageView) findViewById(R.id.iminussign);
    final TextView tNumber=(TextView) findViewById(R.id.tNumber);

    etTo.setText(getIntent().getStringExtra("To"));


    tNumber.setText(String.valueOf(p));
    iplussign.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(p<=9) {
                p++;
                tNumber.setText(String.valueOf(p));
            }
        }
    });
    iminussign.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(p>=2) {
                p--;
                tNumber.setText(String.valueOf(p));
            }
        }
    });

    etFrom.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent ListFrom=new Intent(SearchRide.this,ListFrom.class);
            startActivity(ListFrom);
        }
    });
    etFrom.setText(getIntent().getStringExtra("From"));

    etTo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent ToList =new Intent(SearchRide.this,ListTo.class);
            startActivity(ToList);
        }
    });
    etTo.setText(getIntent().getStringExtra("To"));

    etDate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DatePickerDialog dialog= new DatePickerDialog(SearchRide.this,R.style.MyDatePickerStyle,listener,calendar.get(Calendar.DAY_OF_MONTH),calendar.get(Calendar.MONTH),calendar.get(Calendar.YEAR));
            dialog.getDatePicker().setMinDate(calendar.getTimeInMillis());
            dialog.show();
        }
    });
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

}

2 个答案:

答案 0 :(得分:0)

这是你能做的。在启动活动时将from和to值作为额外值并将它们作为结果返回。这样你就能记住它。我假设你只是不想使用静态变量。

// in ListTo activity
intent.putExtra("To",v);
intent.putExtra("From", getIntent().getStringExtra("From"));

// in ListFrom activity
intent.putExtra("From",v);
intent.putExtra("To", getIntent().getStringExtra("To"));

// in Main activity
etTo.setText(getIntent().getStringExtra("To"));
etFrom.setText(getIntent().getStringExtra("From"));

// when starting ListFrom activity
Intent ListFrom=new Intent(SearchRide.this,ListFrom.class);
intent.putExtra("From", getIntent().getStringExtra("From"));
intent.putExtra("To", getIntent().getStringExtra("To"));
startActivity(ListFrom);

// when starting ListTo activity
Intent ToList =new Intent(SearchRide.this,ListTo.class);
intent.putExtra("From", getIntent().getStringExtra("From"));
intent.putExtra("To", getIntent().getStringExtra("To"));
startActivity(ToList);

PS:我还没有测试过上面的代码。您可以体验空指针错误,但它应该为您提供一般的想法。

答案 1 :(得分:0)

使用startActivityForResult()启动ListFrom和ListTo活动,并在OnActivityResult()方法中接收这些活动的结果。

SearchRide作为主要活动代码:

                protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_search_ride);

                etDate=(EditText) findViewById(R.id.etDate);
                TextView tFrom=(TextView) findViewById(R.id.tFrom);
                TextView tTo=(TextView) findViewById(R.id.tTo);
                etFrom=(EditText) findViewById(R.id.etFrom);
                etTo=(EditText) findViewById(R.id.etTo);
                Button bSearch=(Button) findViewById(R.id.bSearch);
                ImageView iplussign=(ImageView) findViewById(R.id.iplussign);
                ImageView iminussign=(ImageView) findViewById(R.id.iminussign);
                final TextView tNumber=(TextView) findViewById(R.id.tNumber);

                tNumber.setText(String.valueOf(p));
                iplussign.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if(p<=9) {
                            p++;
                            tNumber.setText(String.valueOf(p));
                        }
                    }
                });

                iminussign.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if(p>=2) {
                            p--;
                            tNumber.setText(String.valueOf(p));
                        }
                    }
                });

                etFrom.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent ListFrom = new Intent(SearchRide.this,ListFrom.class);
                        startActivityForResult(ListFrom,0);
                    }
                });

                etTo.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent ToList = new Intent(SearchRide.this,ListTo.class);
                        startActivityForResult(ToList,1);
                    }
                });

                etDate.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        DatePickerDialog dialog= new DatePickerDialog(SearchRide.this,R.style.MyDatePickerStyle,listener,calendar.get(Calendar.DAY_OF_MONTH),calendar.get(Calendar.MONTH),calendar.get(Calendar.YEAR));
                        dialog.getDatePicker().setMinDate(calendar.getTimeInMillis());
                        dialog.show();
                    }
                });
            }

            @Override
            protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                if (requestCode == 0) {
                    if(resultCode == Activity.RESULT_OK){
                        etFrom.setText(data.getStringExtra("From"));
                    }
                } else if (requestCode == 1) {
                    if(resultCode == Activity.RESULT_OK){
                        etTo.setText(data.getStringExtra("To"));
                    }

                }}

ListFrom代码:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_from);

listView=(ListView) findViewById(R.id.listviewFrom);
editText=(EditText) findViewById(R.id.etsearchFrom);

initList();
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String v="";
        switch (position) {
            case 0:
                v = items[0];
                break;
            case 1:
                v = items[1];
                break;
            case 2:
                v = items[2];
                break;
            case 3:
                v = items[3];
                break;
            case 4:
                v = items[4];
                break;
            case 5:
                v = items[5];
                break;
        }
    Intent intent = new Intent();
        intent.putExtra("From",v);
        setResult(Activity.RESULT_OK, intent);
        finish();

    }
});

ListTo代码:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_to);

etSearchTo=(EditText) findViewById(R.id.etSearchTo);
listViewTo=(ListView) findViewById(R.id.listViewTo);

initList();
listViewTo.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String v="";
        switch (position) {
            case 0:
                v = items[0];
                break;
            case 1:
                v = items[1];
                break;
            case 2:
                v = items[2];
                break;
            case 3:
                v = items[3];
                break;
            case 4:
                v = items[4];
                break;
            case 5:
                v = items[5];
                break;
        }
        Intent intent = new Intent();
        intent.putExtra("To",v);
        setResult(Activity.RESULT_OK, intent);
        finish();
    }
});