Выбор спиннера для использования в нескольких видах деятельности

#android #string #android-activity #textview #spinner

#Android #строка #android-активность #textview #счетчик

Вопрос:

Попробовав несколько методов, предложенных в других сообщениях на этом сайте, я могу только предположить, что я тупой, поэтому, если кто-нибудь сможет взглянуть на мой код, я был бы благодарен.

У меня есть выбранный элемент в spinner в одном действии, и я сохранил этот элемент в виде строки, затем передал строку следующему действию и отобразил ее в текстовом представлении в этом действии. Это работает.

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

Чтобы добиться этого, вот код из моего первого действия после нажатия кнопки.

Intent recordissues2 = new Intent(RecordIssue.this, RecordIssue2.class);
Bundle sitename = new Bundle();
sitename.putString("txt1a",spinnerbuilding.getSelectedItem().toString());
recordissues2.putExtras(sitename);
startActivity(recordissues2);

И для второго действия в onCreate

Bundle sitename = this.getIntent().getExtras();
String txt1a = sitename.getString("txt1a");
((TextView) findViewById(Sitelbl2)).setText(txt1a);

если вы можете помочь мне с каким-нибудь примером кода для достижения следующего шага и того, куда он должен идти, и, желательно, как именно он работает, это было бы идеально.

Заранее благодарю вас. Рик

Ответ №1:

вы можете использовать общие настройки для хранения данных и использовать их во всем приложении в любом классе действий:

     SharedPreferences myprefs= this.getSharedPreferences("shared_key", MODE_WORLD_READABLE);
    myprefs.edit().putString("spinner_value", value).commit();
 

Вы можете получить эту информацию в своем приложении следующим образом:

     SharedPreferences myprefs= getSharedPreferences("shared_key", MODE_WORLD_READABLE);
    String spinner_value= myprefs.getString("spinner_value", null);
 

Комментарии:

1. Спасибо, как будто я что-то упускаю, в моих ограниченных знаниях, очевидно, есть пробел, потому что, когда я использую ваш код, он сообщает мне, что «не может разрешить значение символа», поэтому, не имея «значения», я понимаю, что должен его изменить, но на что? Я поместил код в событие on click, но перед намерением перейти к следующему событию, возможно, это неправильно, я не уверен.

2. нет проблем,,,здесь value= spinnerbuilding.getSelectedItem().toString(); значение счетчика, которое вы хотите сохранить … если это сработает, можете ли вы принять ответ

3. Ну, я использовал ваш код, и он дал мне достаточно понимания, чтобы внести изменения, необходимые для того, чтобы он работал.

4. Вот изменения, которые я использовал:

5. Первое действие: ‘SharedPreferences myprefs= this.getSharedPreferences(«shared_key», Context.MODE_PRIVATE); SharedPreferences. Редактор editor = myprefs.edit(); editor.putString(«spinner_value», spinnerbuilding.getSelectedItem().toString()); editor.apply();’ И второе действие’ SharedPreferences myprefs= getSharedPreferences(«shared_key», Context.MODE_PRIVATE); Строка spinner_value = myprefs.getString(«spinner_value»,»»); ((TextView)findViewById(R.id.tvbuilding)).setText(spinner_value);’

Ответ №2:

В вашем RecordIssue2 действии вы уже сохранили свой текст как txt1a . Используя ту же концепцию, добавьте ее в свой Intent пакет при переходе к третьему действию.

 Intent recordissues3 = new Intent(RecordIssue2.this, RecordIssue3.class);
Bundle sitename = new Bundle();
sitename.putString("txt1a",txt1a);
recordissues3.putExtras(sitename);
startActivity(recordissues3);
 

Комментарии:

1. Спасибо, но, как и в приведенном выше ответе, я получаю «не удается разрешить символ ‘txt1a'», где «sitename.putString(«txt1a», ЯВЛЯЕТСЯ ПРОБЛЕМОЙ)»

2. Вы должны сделать это после Bundle sitename = this.getIntent().getExtras(); String txt1a = sitename.getString("txt1a"); ((TextView) findViewById(Sitelbl2)).setText(txt1a); выполнения второго действия, чтобы оно txt1a уже было определено, возможно, одним нажатием кнопки.

3. Привет, я принял другой ответ, но если вы посмотрите на мой другой вопрос и опубликуете это решение там, я спросил, как это делается без использования sharedprefs, и поскольку ваше решение действительно работает, я отмечу его как правильное. Спасибо.

4. Не проблема, если ваша проблема решена.