#java #android
#java #Android
Вопрос:
Я вроде как новичок в Android. Я хочу получить значение int id
(идентификатор динамически генерируемых кнопок) из класса MainPage
в класс Note
при нажатии кнопки. но значение id
всегда обращается к нулю в Note
классе.
вот обобщенный код:
Класс MainPage:
public class MainPage extends AppCompatActivity {
public int id;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for (int j=0; j<allnotes.size(); j ) {
//generating buutons
final Button preview_text = new Button(this);
preview_text.setId(j)
preview_text.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//getting id of the clicked button
id=v.getId();
startActivity(new Intent(MainPage.this, Note.class));
}
});
}
}
}
Класс заметок:
public class Note extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.note);
MainPage obj=new MainPage();
int id=obj.id
View parentLayout = findViewById(android.R.id.content);
Snackbar mySnackbar = Snackbar.make(parentLayout,Integer.toString(id) , 10000);
mySnackbar.show();
}
в сообщении snackbar id
всегда равно нулю.
Ответ №1:
Вам нужно добавить идентификатор к намерению, которое вы используете для запуска действия Note. Вы делаете это с помощью Intent.putExtra(…), а в Note вы извлекаете его через GetIntent().getIntExtra(…)
Ответ №2:
Здесь я реализовал ответ @Riccully в вашем коде.
MainPage.java
preview_text.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//getting id of the clicked button
id = v.getId();
Intent intent = new Intent(MainPage.this, Note.class);
intent.putExtra("id_value", id);
startActivity(intent);
}
});
Note.java
@Override
protected void onCreate (Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.note);
int id = getIntent().getIntExtra("id_value", 0);
View parentLayout = findViewById(android.R.id.content);
Snackbar mySnackbar = Snackbar.make(parentLayout, Integer.toString(id), 10000);
mySnackbar.show();
}
Ответ №3:
мы можем сделать это с помощью intent, потому что Android Intent — это сообщение, которое передается между такими компонентами, как действия, поставщики контента, широковещательные приемники, службы и т.д.
В нашем случае мы можем отправить v.getId() в Note.java , Виапутекстра
intent.putExtra("view_id",v.getId());
и получить значение в Note.java с помощью
getIntent().getIntExtra("view_id", 0);