#java #android #button
#java #Android #кнопка
Вопрос:
У меня есть кнопка. Когда я нажимаю кнопку, я хочу изменить значение переменной на 3. В другом действии я хочу иметь возможность получить значение переменной и выполнить некоторые вычисления на основе этого значения.
Я пробовал использовать методы получения и установки и просто традиционно менял значения, и, похоже, ничего не работает.
//MainActivity.java
mButtonChoice2 = (Button)findViewById(R.id.choice2);
mButtonChoice2.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
//My logic for Button goes in here
if (mButtonChoice2.getText() == "Three"){
setDays(3);
openActivity();
}
}
public int getDays() {
return days;
}
public void setDays(int value){
days = value;
}
public void openActivity() {
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
}
//SecondActivity.java
public class SecondActivity extends AppCompatActivity {
private TextView textview;
private MainActivity obj = new MainActivity();
Integer days = obj.getDays();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
textview = findViewById(R.id.program);
if (days == 3) {
textview.setText("Days is 3");
}
else {
textview.setText(days);
}
Я хочу, чтобы textview во втором действии обновлял текст textview с помощью «дней 3»
Однако он просто выдает ошибку, потому что не может правильно получить значение целых дней.
Ответ №1:
попробуйте следующий обновленный код:
//MainActivity.java
mButtonChoice2 = (Button)findViewById(R.id.choice2);
mButtonChoice2.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
//My logic for Button goes in here
if (mButtonChoice2.getText() == "Three"){
setDays(3);
openActivity();
}
}
public int getDays() {
return days;
}
public void setDays(int value){
days = value;
}
public void openActivity() {
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra ("days",days);
startActivity(intent);
}
//SecondActivity.java
public class SecondActivity extends AppCompatActivity {
private TextView textview;
private MainActivity obj = new MainActivity();
// Integer days = obj.getDays();
int days=0;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Intent intent=getIntent();days=intent.getIntExtra ("days",0);
textview = findViewById(R.id.program);
if (days == 3) {
textview.setText("Days is 3");
}
else {
textview.setText(days);
}
Ссылка :https://developer.android.com/reference/android/content/Intent
https://www.dev2qa.com/passing-data-between-activities-android-tutorial/
Комментарии:
1. java.lang.RuntimeException: Не удается запустить activity ComponentInfo{com.example. quizactivity/com.example. викторина. SecondActivity}: java.lang. Исключение NullPointerException: попытка вызвать виртуальный метод ‘void android.widget. TextView.setText(java.lang. CharSequence)’ для нулевой ссылки на объект. Это ошибка, которую я получил, когда попробовал ваше решение
2. ДжонЕгг: Вам нужно добавить действие (второе действие ) в файл манифеста Android. Затем для textview вам нужно получить из файла макета (findViewById(R.id .) вот так. Лучше пройтись по веб-сайтам, которые я уже упоминал в качестве справочных.
Ответ №2:
Просто объявите статическую переменную в одном действии и используйте ее во втором действии.