繁体   English   中英

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

[英]How to display both data in Edittext without losing one of them?

我在MainActivity中有两个Edittext: etFrometTo 单击后, etFrom进入ListFrom活动, etTo进入ListTo活动。 ListFromListTo活动包含Listview,在选择一个项目之后,它返回Main活动并以edittexts显示结果。 我使用MainActivity.putExtra("To",v); etTo.setText(getIntent().getStringExtra("To")); 从活动中获取数据。

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

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代码

 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) {

}

这是您可以做的。 开始活动时,将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:我尚未测试以上代码。 您可能会遇到空指针错误,但这应该可以为您提供总体思路。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM