1

実際、プロジェクトの作成中に問題が発生しました。データがデータベースから取得され、それにバインドされる1つの画面に1つのリストビューがあります。ここでは、2 つのメニュー (表示と削除) を持つ 1 つのコンテキスト メニューを作成しました。私が直面している問題は、長いクリック コンテキスト メニューを発生させるときと、メニューのいずれかをクリックすると別の画面に移動することです。ここでは、(クリックされた) リストビューの項目データを次の画面に渡したいと考えています。私はそれを取得していません。これは次のコードです...

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 に渡します。

返事を待っています......

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 に答える