2012-03-17 1 views
0

私の問題は、コンテキストメニューからアクティビティを修正する方法です。コンテキストメニューからアクティビティを修正するには

私は、このような活動があります。主な活動で

  • Main
  • AccelerometerOptionsActivity
  • GyroscopeOptionsActivity
  • OrientationOptionsActivity

私はセンサーのリストを持っています。センサーをクリックすると、コンテキストメニューが表示されます。オプション。

私の問題は、コンテキストメニューから選択したセンサーのオプションアクティビティに切り替える方法です。 マイコード:

@Override 
    public boolean onContextItemSelected(MenuItem item) { 
     AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); 
     int menuItemIndex = item.getItemId(); 
     String[] menuItems = getResources().getStringArray(R.array.sensor_array); 
     String menuItemName = menuItems[menuItemIndex]; 


     if(item.getTitle()=="Start Service"){ 
      Toast.makeText(this,"Start " + menuItemName+ " selected", Toast.LENGTH_SHORT).show(); 
     } else if(item.getTitle()=="Stop Service") { 
      Toast.makeText(this,"Stop " + menuItemName+ " selected", Toast.LENGTH_SHORT).show(); 
     } else if(item.getTitle()=="Options") { 


       Intent options = new Intent(this, AccelerometerOptionsActivity.class); 
       startActivity(options); 

     } 

     return true; 
    } 

がUPDATE:

@Override 
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
     if (v.getId()==R.id.list) { 
      AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo; 

      menu.setHeaderTitle(sensorsArray[info.position]); 
      menu.add(Menu.NONE, CONTEXTMENU_START, 0, "Start Service"); 
      menu.add(Menu.NONE, CONTEXTMENU_STOP, 1, "Stop Service"); 
      menu.add(Menu.NONE, CONTEXTMENU_OPTIONS, 2, "Options"); 
      menu.add(Menu.NONE, CONTEXTMENU_GRAPHS, 3, "Graph view"); 
      menu.add(Menu.NONE, CONTEXTMENU_DATA, 4, "Data view"); 
     } 
    } 
+0

あなたは 'ContextMenu'を設定している(リスト)上のセンサで' ListView'を持っていますか? – Luksprog

+0

コンテキストメニューを表示するコードを投稿します。 –

+0

はい私は、ContextMenuが表示されるセンサーの名前をクリックすると、センサーでListViewを持っています。上記の質問にコードを追加します。 – erni

答えて

0

if(item.getTitle()=="Options") {... 

を交換してください:

@Override 
    public boolean onContextItemSelected(MenuItem item) { 
     AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item 
        .getMenuInfo(); 
     int menuItemIndex = item.getItemId(); // the position of the item in the list with the context menu 
     String[] menuItems = getResources().getStringArray(R.array.sensor_array); 
     String menuItemName = menuItems[menuItemIndex]; 
     switch (item.getItemId()) { 
     case CONTEXTMENU_START: 
      Toast.makeText(this, "Start " + menuItemName + " selected", 
         Toast.LENGTH_SHORT).show(); 
     break; 
     case CONTEXTMENU_STOP: 
      Toast.makeText(this, "Stop " + menuItemName + " selected", 
        Toast.LENGTH_SHORT).show(); 
     break; 
      case CONTEXTMENU_OPTIONS: 
     // here start the correct options activity either by checking for 
     // String equality with menuItemName or by doing a switch on the menuItemIndex(this works 
     // if your list of sensors is based on the array R.array.sensor_array) 
      switch (menuItemIndex) { 
       case 0: 
       //the user clicked the first sensor in the list so start that option activity   
       break; 
       case 1: 
       //the user clicked the second sensor in the list so start that option activity 
        break; 
       } 
     } 
     return super.onContextItemSelected(item); 
} 
+0

私はあなたの解決策を試しましたが、うまくいきません。私はコードをデバッグし、switch文を省略しています。 – erni

+0

@erni上記のコードでは、 'int menuItemIndex = item.getItemId();'を 'int menuItemIndex = info.position; 'に置き換えてください。 – Luksprog

+0

ありがとうございます! – erni

0

使用.contains(yourString)メソッドの代わりに==:

ここでは、コードです。例: あなたのonContextItemSelected()でこれを試してみてください

if(item.getTitle().contains("Options") {... 
+0

これを切り替えて切り替えました。しかし、これは私の問題ではありません。私の問題は適切な活動に到達することです。 – erni

+0

あなたのコードは==部分を除いて正常に見えます。それを交換し、参照してください。可能であればデバッグし、ブレークポイントに当たるかどうか確認してください。あなたが何か例外や何かを取得している場合は、あなたの質問と一緒にlogcatからログを入れてください。 – Rajkiran

+0

あなたは私の問題を理解していないと思います。私は適切なオプション活動に指導されたい。私は加速度計を選択し、コンテキストメニューから加速度計のオプションに行きたいと思っています。私はオリエンテーションサービスを選択し、コンテクストメニューからオリエンテーションオプションなどに行きたいです。==この部分はうまくいきます。よろしくお願いします。 – erni

関連する問題