7

したがって、リスト内のアイテムをクリックして1つのアクションを実行するか、そのアイテムを長押しして複数のアイテムを選択できるActionModeに切り替える方法については、this earlier questionを読んでいました。 ActionBarを使ってそれらのアイテムに何かをさせてください。ただし、this answerに関する問題が発生しています。具体的には、これをSherlockListFragment(ActionBarSherlockを使用)に実装しています。しかし、新しいMultiChoiceModeListenerを宣言すると、Eclipseはいくつかのコンパイルエラーを投げます。SherlockListFragmentの問題を引き起こすMultiChoiceModeListener

Description Resource Path Location Type 
Cannot override the final method from SherlockListFragment DateTimeListFragment.java /path/to/my/project line 127 Java Problem 
The method inflate(int, Menu) in the type MenuInflater is not applicable for the arguments (int, Menu) DateTimeListFragment.java /path/to/my/project line 125 Java Problem 

これは、私がMultiChoiceModeListenerを削除した瞬間です。私は気づいていることが何も変わっていないので、何が原因か分かりません。

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) 
    { 
     //super.onCreateOptionsMenu(menu, inflater); 
     inflater.inflate(R.menu.alarmsmenu, menu); //line 125 
    } 
    public boolean onOptionsItemSelected(MenuItem Item) //line 127 
    { 
     switch(Item.getItemId()) 
     { 
     case R.id.addAlarm: 
      addAlarm(); 
      return true; 
     case R.id.editAlarms: 
      return true; 
     default: 
      return super.onOptionsItemSelected(Item); 
     }  
    } 

私は非常に混乱しています。 MultiChoiceModeListenerを実装すると、OnOptionsItemSelectedをオーバーライドできないのはなぜですか?

EDIT:明確にするために、ここに私の輸入品です。私はActionBarSherlock demo projectを輸入しようとしてActionItem例が動作するかどうかを確認したい、また

import com.actionbarsherlock.view.Menu; 
import com.actionbarsherlock.view.MenuItem; 

import java.util.Calendar; 
import java.util.GregorianCalendar; 
import android.app.DatePickerDialog; 
import android.app.TimePickerDialog; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.support.v4.app.*; 
import android.support.v4.content.Loader; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AbsListView.MultiChoiceModeListener; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemLongClickListener; 
import android.widget.DatePicker; 
import android.widget.ListView; 
import android.widget.TimePicker; 

import com.actionbarsherlock.app.SherlockListFragment; 
import com.actionbarsherlock.app.ActionBar; //Yes, it's unused... 
import com.actionbarsherlock.view.*; 
import com.commonsware.cwac.loaderex.acl.*; 
+0

これを試すhttp://stackoverflow.com/questions/14737519/implementing-multi-selection-and-contextual-actionmode-in-actionbarsherlock/14737520#14737520 –

答えて

6

a kind person from reddit has notified meとして、明らかにActionBarSherlockが現在MultiChoiceModeListenerをサポートしていません。私がActionBarSherlockのメニューを使用しているという事実は、リスナーがネイティブのAndroidメニューを望んでいる場合、おそらく問題にも寄与します。

0

は、あなたがこの2つのクラスではなくバニラアンドロイドのバージョンをインポートしていることを確認してください。

+0

私はインポートがありますcom.actionbarsherlock.view。*;メニューを参照する可能性のある他のインポートはありません。 – MowDownJoe

1

Eclipseを使用している場合、私はあなたのimportディレクティブをすべて削除し、(Mac用 O Cmdを + Shiftキー + )O Ctrlキー + Shiftキー + を打つだろう、紛争に基づいて輸入品を慎重に選択してください。確かフラグメントを使用していない

私の現在のSherlockActivitesは、やっている:私はSherlockActivity秒に私のActivity秒に変換されたときに記述された正確な問題を持っていた

import com.actionbarsherlock.app.ActionBar; 
import com.actionbarsherlock.app.ActionBar.Tab; 
import com.actionbarsherlock.app.SherlockActivity; 
import com.actionbarsherlock.view.Menu; 
import com.actionbarsherlock.view.MenuItem; 

EDIT:MenuItemには完全修飾されていることを

public boolean onActionItemClicked(ActionMode mode, android.view.MenuItem item) 
{ 
    // TODO Auto-generated method stub 
    return false; 
} 

注:は私のクラスにMultiChoiceModeListenerインタフェースを追加するには、生成されるように、以下のようなメソッドを引き起こしました。これはここでの手がかりになるかもしれません。おそらく、あなたはAndroidメニューを期待するものにSherlockメニューを渡そうとしています。

私のアドバイスは、相反する可能性のある呼び出しをすべて修飾しようとしていて、間違って呼び出されているメソッドを見つけた後、そこから行ってください。例えば

、変更:

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) 

へ:

public void onCreateOptionsMenu(Fully.Qualified.Path.Menu menu, MenuInflater inflater) 
関連する問題