これらの 2 つのライブラリを試して、Android アプリケーションNewQuickActionとNewQuickAction3Dでボタン メニューを作成します。
それらを使用するコードは同じです!ただし、NewQuickAction を使用すると正しく動作しますが、プロジェクトの外部ライブラリを変更して NewQuickAction3D を使用すると、動作せず、次のエラーが返されます。
致命的な例外: net.londatiga.android.QuickAction.addActionItem(QuickAction.java:213) での main java.lang.NullPointerException
コードは次のとおりです。
ActionItem myLocationItem = new ActionItem(ID_MY_LOCATION, "Mia posizione", getResources().getDrawable(R.drawable.location));
ActionItem nearestItem = new ActionItem(ID_NEAREST_STATION, "Stazione piu vicina", getResources().getDrawable(R.drawable.location));
ActionItem activeGpsItem = new ActionItem(ID_ACTIVE_GPS, "Attiva GPS", getResources().getDrawable(R.drawable.gps));
// constructor for NewQuickAction
final QuickAction mQuickAction = new QuickAction(this );
// constructor for NewQuickAction3D
//final QuickAction mQuickAction = new QuickAction(this, QuickAction.VERTICAL);
mQuickAction.addActionItem(myLocationItem);
mQuickAction.addActionItem(nearestItem);
mQuickAction.addActionItem(activeGpsItem);
//setup the action item click listener
mQuickAction.setOnActionItemClickListener(new QuickAction.OnActionItemClickListener() {
@Override
public void onItemClick(QuickAction quickAction, int pos, int actionId) {
if (actionId == ID_MY_LOCATION) {
Toast.makeText(getApplicationContext(), "I have no info this time", Toast.LENGTH_SHORT).show();
} else if (actionId == ID_NEAREST_STATION ) {
Toast.makeText(getApplicationContext(), "I have no info this time", Toast.LENGTH_SHORT).show();
} else {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}
}
});
ImageButton buttonMenu = (ImageButton) findViewById(R.id.button_menu);
buttonMenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mQuickAction.show(v);
}
});
新しい ActionItem を作成するために使用されるアイコンとテキストが NewQuickAction3D で表示されないようです
ライブラリを通常のプロジェクト (ライブラリもデモ プロジェクト) として実行すると、正しく動作します。
何かアイデア?