Как сохранить значения в Edittext? - PullRequest
1 голос
/ 05 мая 2020

Я создал источник и назначение как два текста редактирования, в которых я помещаю адрес источника и назначения из другого действия, но первое или второе значение удаляется при возвращении для размещения второго значения. Когда первое значение помещается в первый текст редактирования и собирается поместить другое значение из другого действия, первое значение удаляется.

Я пробовал Общие настройки, но это не работает.

Вот мой код.

    Intent intent = getIntent();
    String source = intent.getStringExtra("place");
    search.setText(source);
    Intent intent1 = getIntent();
    String dest = intent1.getStringExtra("my1dest");
    desti.setText(dest);


    swap.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            String s1 = search.getText().toString();
            String s2 = desti.getText().toString();
            if (!s1.isEmpty() && !s2.isEmpty()) {
                desti.setText(s1);
                search.setText(s2);// this for swap the values source to destination viceversa



            }

        }
    });

и из этого класса адаптера я передаю значения

  Intent intent=new Intent(context,MainActivity.class);

            intent.putExtra("place",searchlist.getPlaces());
            intent.putExtra("dest",searchlist.getPlaces());
            intent.putExtra("lat",searchlist.getLat());
            intent.putExtra("lang",searchlist.getLang());
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_CLEAR_TASK);
            context.startActivity(intent);

пожалуйста, дайте идею для этой концепции, спасибо ..

см. Это изображение

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Если вы пытаетесь сохранить значения, переданные из двух разных действий, вам нужен механизм для сохранения первого значения, а затем вы должны получить другое значение из другого действия.

Проблема в том, что вы заменяете значения с тем же намерением (намерение из одного и того же действия):

Intent intent = getIntent();  //if this is intent from your MainActivity
String source = intent.getStringExtra("place");  //you will get this value
search.setText(source);
Intent intent1 = getIntent(); //and this as well is intent from same activity (MainActivity)
String dest = intent1.getStringExtra("my1dest"); //you will not get this value as this is not passed from MainActivity
desti.setText(dest);

Решением может быть сохранение одного значения в SharedPreference или любое другое среднее значение (db или сеть) и получить другое значение из другого намерения: вы должны проверить, является ли значение нулевым, а не заменять его. Как:

Intent intent = getIntent();  //if this is intent from your MainActivity
String source = intent.getStringExtra("place");  //you will get this value
if(source.isNotEmpty){
//save to preferences and set text 
search.setText(source);
}

Intent intent1 = getIntent(); //if this is intent from your otherActivity 
String dest = intent1.getStringExtra("my1dest"); 
if(dest.isNotEmpty){
//save to preferences and set text 
desti.setText(dest);
}
0 голосов
/ 08 мая 2020

Вот рабочий код

Edittext source,destination;
    swap.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            String s1 = search.getText().toString();
            String s2 = desti.getText().toString();

            if (s1.contains(s1) && s2.contains(s2)) {
                desti.setText(s1);
                search.setText(s2);
            } else {
                desti.setText(s2);
                search.setText(s1);
            }


        }
    });//for setting values from one edittext to another


    search.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            Intent intent = new Intent(MainActivity.this, Added.class);
            startActivityForResult(intent,1);
        }
    });

    desti.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent intent = new Intent(MainActivity.this, Destinationsearch.class);
            startActivityForResult(intent,2);
        }
    });// here i have started Activity For result to my Adapter class

получение значений из класса адаптера

 @Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 1 && resultCode == RESULT_OK && data != null)
    {
        String place=data.getStringExtra("place");
        search.setText(place);

    }

    if (requestCode==2 && resultCode==RESULT_OK && data!=null)
    {
        String dest=data.getStringExtra("my1dest");
        desti.setText(dest);
    }
}

, а это мой класс Adpter

 @Override
public void onBindViewHolder(@NonNull SearchedAdapter.Myholder holder, int position) {
    Searchlist searchlist = list.get(position);

    holder.textView.setText(searchlist.getPlaces());

    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent intent = new Intent(context, MainActivity.class);
            intent.putExtra("place", searchlist.getPlaces());
            intent.putExtra("my1dest", searchlist.getPlaces());
            intent.putExtra("lat", searchlist.getLat());
            intent.putExtra("lang", searchlist.getLang());
            ((Activity) context).setResult(Activity.RESULT_OK, intent);
            ((Activity) context).finish();
        }
    });

}

Этот набор (:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...