на самом деле у меня возникла проблема при создании моего проекта. У меня есть один просмотр списка на одном экране, где данные поступают из базы данных и привязаны к нему. Я создал здесь одно контекстное меню с двумя меню (view & delete). Проблема, с которой я столкнулся, - это когда я создаю контекстное меню с длинным кликом и когда я нажимаю на любое из меню, оно переходит на другой экран. здесь я хочу, чтобы данные списка (которые были нажаты) перешли на следующий экран. Я не понимаю. Это следующий код...
Main.java
/*******some code****/
DbHandler dbh=new DbHandler(GroupName.this);
ast=dbh.selectgroupnam(s);
//here "ast" is of ArrayList defined globally
ArrayAdapter<String> adp=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,ast);
lv.setAdapter(adp);
registerForContextMenu(lv);
lv.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View v, int p, long arg3) {
// TODO Auto-generated method stub
TextView tv=(TextView)v;
String gnam=tv.getText().toString();
}});
}//on create
//context menu code
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0, v.getId(), 0, "View");
menu.add(0, v.getId(), 0, "Delete");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "group name" + gnam,30).show();
if (item.getTitle() == "Delete") {
Toast.makeText(getApplicationContext(), "selected group" + gnam, 30).show();
startActivity(new Intent(GroupName.this,GroupEdit.class));
}
else
{
startActivity(new Intent(GroupName.this,GroupEdit.class));
}
return super.onContextItemSelected(item);
}
В соответствии с приведенным ниже кодом, как получить данные просмотра списка (который был долго нажат для контекстного меню) и передать данные в GroupEdit.class.
Ожидание ответа......
Итак, вы начинаете активность startActivity(new Intent(GroupName.this,GroupEdit.class))
но любые данные, которые вы добавляете к намерениям. Поэтому попробуйте с помощью putExtra(<key>,<data>)
или если вы хотите использовать Bundle
так putExtras(<bundle>)
Вы должны это сделать так:
Intent i = new Intent(GroupName.this,GroupEdit.class);
i.putExtra("key", <data>);
startActivity(i);
Затем в новом Activity GroupEdit
вы получите эти данные с getIntent()
метода getIntent()
который возвращает намерение, которое запустило эту getExtras()
и getExtras()
с ней вы извлекаете карту расширенных данных из намерения.
Итак, в GroupEdit
String text = getIntent().getExtras().getString("keyOfField")
Из вас будет использоваться Bundle
Intent i = new Intent(GroupName.this,GroupEdit.class);
i.putExtras(bundle);
startActivity(i);
в GroupEdit
вы извлекаете данные с данными Bundle data = getIntent().getExtras()
С уважением