共有ウィジェットと ListNavigation をアクションバーに配置できました。しかし、それらをクリックしても、共有ボタンに共有オプションが表示されず、ListNavigation で選択したリスト項目に移動しません。
これを設定する必要があるコードは次のとおりです。
public class MainActivity extends SherlockActivity implements ActionBar.OnNavigationListener
{
Dialog dialog;
private TextView mSelected;
private String[] mLocations;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTheme(R.style.Theme_Sherlock_Light);
//setContentView(R.layout.list_navigation);
mSelected = (TextView)findViewById(R.id.text);
mLocations = getResources().getStringArray(R.array.locations);
Context context = getSupportActionBar().getThemedContext();
ArrayAdapter<CharSequence> list = ArrayAdapter.createFromResource(
context, R.array.locations, R.layout.sherlock_spinner_item);
list.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);
getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
getSupportActionBar().setListNavigationCallbacks(list, this);
and here is my menu inflater and other relevant methods:
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
return true;
}
private Intent createShareIntent()
{
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain"); //shareIntent.setType("image/*");
shareIntent.putExtra(Intent.EXTRA_TEXT,"Mobile apps to plan and start your busienss, covering business ideas, business planning, marketing and fundraising.");
shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Check out http://www.myurl.com");
return shareIntent;
}
メニュー項目の 1 つを選択しても、このメソッドは呼び出されません。
public boolean onNavigationItemSelected(int itemPosition, long itemId)
{
if ( itemPosition == 0 )
{
Intent myIntent = new Intent(MainActivity.this, MainActivity.class);
MainActivity.this.startActivity(myIntent);
}
else
if ( itemPosition == 1 )
{
Intent myIntent = new Intent(MainActivity.this, LearnActivity.class);
MainActivity.this.startActivity(myIntent);
}
else
if ( itemPosition == 2 )
{
Intent myIntent = new Intent(MainActivity.this, ServicesActivity.class);
MainActivity.this.startActivity(myIntent);
}
else
if ( itemPosition == 3 )
{
Intent myIntent = new Intent(MainActivity.this, GiveBackActivity.class);
MainActivity.this.startActivity(myIntent);
}
return true;
}
そして、ここに私のmain_menu.xmlがあります
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_item_share"
android:showAsAction="ifRoom"
android:title="Share"
android:actionProviderClass="android.widget.ActionProvider" />
<item
android:id="@+id/menuSort"
android:showAsAction="ifRoom"
android:actionLayout="@layout/action_sort" />
</menu>
共有ウィジェットも ListNavigation も、選択時に対応するメソッドを呼び出さない理由を知っている人はいますか?
シミュレーターの起動時に、次の 2 つのエラー/警告も表示されます。
[2013-06-27 08:43:57 - actionbarsherlock] 'default' is not a best match for any device/locale combination.
[2013-06-27 08:43:57 - actionbarsherlock] Displaying it with ', , Locale Language ___Region __, sw320dp, w320dp, h533dp, Normal Screen, Long screen aspect ratio, Portrait Orientation, Normal, Day time, High Density, Finger-based touchscreen, Soft keyboard, No keyboard, Hidden navigation, Trackball navigation, Screen resolution 800x480, API Level 15' which is compatible, but will actually be displayed with another more specific version of the layout.
アプリの画面要素がグレー表示される様子を示すスクリーンショットは次のとおりです。
そして、コードにデバッグ ステートメントを入れると、onNavigationItemSelected() メソッドが毎分 100 回程度のループで呼び出され続けるようです。
ありがとう!- アレックス