1

实际上我在创建项目时遇到了问题。我在一个屏幕中有一个列表视图,其中数据来自数据库并绑定到它。我在这里创建了一个带有两个菜单(查看和删除)的上下文菜单。我面临的问题是当我长按上下文菜单时,当我单击任何菜单时,它会导航到另一个屏幕。在这里,我希望将列表视图(已单击)项目数据传递到下一个屏幕。因为我不明白。这是以下代码...

主.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。

等待回复......

4

1 回答 1

2

因此,您开始活动startActivity(new Intent(GroupName.this,GroupEdit.class)) ,但您要添加到意图的任何数据。所以试试吧,putExtra(<key>,<data>)或者如果你想用BundleputExtras(<bundle>)

你应该这样:

Intent i = new Intent(GroupName.this,GroupEdit.class);
i.putExtra("key", <data>);
startActivity(i);

然后在 new 中,您使用返回启动此活动的意图Activity GroupEdit的方法获取此数据,并使用它从意图中检索扩展数据的映射。getIntent()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()

问候

于 2012-06-02T11:17:34.790 回答