के लिए प्रासंगिक क्रिया बार अजीब व्यवहार प्रासंगिक कार्रवाई बार में मेरे पास कुछ अजीब व्यवहार है।मेनू आइटम
सबसे पहले:
दूसरे/तीसरे:
एक मेनू आइटम केवल हर दूसरी बार मैं अतिप्रवाह बटन पर क्लिक करें दिखाया गया है
वहाँ एक तरीका है कि प्रतीक है इतनी जगह का उपयोग न करें?
जब मैं सभी वस्तुओं के लिए संपत्ति android:showAsAction="always"
जोड़ने बदलने के लिए, वहाँ सभी चिह्न दिखाने के लिए वास्तव में पर्याप्त जगह - लेकिन मेरे हिस्से आइकन अब और क्लिक करने योग्य नहीं है:
स्वच्छ परियोजना नहीं है मदद।
मैं अपने परीक्षण डिवाइस (गैलेक्सी एस 3) पर एंड्रॉइड 4.2.2 का उपयोग करता हूं। मदद नहीं की -
मैं भी पूरी तरह से मेरी XXX जीएस 3 पर एक नया ROM फ्लैश करने की कोशिश की (अब CyanogenMod 10.1, SlimBean से पहले, यह भी तल पर पर navigationbar निकाला गया)।
मैंने इसे Nexus 4 पर भी आजमाया। और जगह है, इसलिए शेयर बटन और डिलीट बटन दिखाई दे रहे हैं। शेयर बटन क्लिक करने योग्य नहीं है जब मैं एक्शन मोड शुरू करता हूं, लेकिन जब मैं डिवाइस को लैंडस्केप मोड में बदलता हूं तो यह काम करता है, और जब मैं इसे वापस पोर्ट्रेट पर बदलता हूं तो यह अभी भी काम करता है। तो मूल रूप से नेक्सस 4 पर, शेयर बटन घूर्णन से पहले काम नहीं करता है।
मैनिफ़ेस्ट:
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17" />
minSdkVersion=17
के खिलाफ संकलन कोई फर्क नहीं पड़ता।
मैं इस तरह एक टुकड़ा से कार्रवाई मोड शुरू:
mActionMode = activity.startActionMode(mMultipleCallback);
ActionMode.Callback
में मैं मेनू को पॉप्युलेट:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:title="@string/checkAll"
android:id="@+id/managementCABCheckAll"
android:icon="@android:drawable/checkbox_on_background">
</item>
<item
android:title="@string/enable"
android:id="@+id/managementCABEnable"
android:icon="@drawable/sphere_green">
</item>
<item
android:title="@string/disable"
android:id="@+id/managementCABDisable"
android:icon="@drawable/sphere_red">
</item>
<item
android:title="@string/delete"
android:id="@+id/managementCABDelete"
android:icon="@android:drawable/ic_menu_close_clear_cancel">
</item>
<item
android:title="@string/share"
android:id="@+id/managementCABShare"
android:actionProviderClass="android.widget.ShareActionProvider"
android:icon="@android:drawable/ic_menu_share">
</item>
<item
android:title="@string/export"
android:id="@+id/managementCABExport"
android:icon="@drawable/explorer">
</item>
</menu>
:
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.management_cab, menu);
MenuItem item = menu.findItem(R.id.managementCABShare);
mShareActionProvider = (ShareActionProvider) item.getActionProvider();
//...other stuff
return true;
}
और यहाँ एक्सएमएल है पूर्णता के लिए पूरे callback
:
protected ActionMode.Callback mMultipleCallback = new ActionMode.Callback() {
private ShareActionProvider mShareActionProvider;
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.management_cab, menu);
MenuItem item = menu.findItem(R.id.managementCABShare);
mShareActionProvider = (ShareActionProvider) item.getActionProvider();
hideUnwantedCABItems(menu);
return true;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
List<Integer> checkedPositions = getAllCheckedPositions();
switch (item.getItemId()) {
case R.id.managementCABCheckAll:
changeCheckedOfAllItems(true);
return true;
case R.id.managementCABEnable:
changeEnabled(checkedPositions, true);
return true;
case R.id.managementCABDisable:
changeEnabled(checkedPositions, false);
return true;
case R.id.managementCABDelete:
if (deleteAlert == null)
createDeleteDialog(checkedPositions);
initDeleteDialog(checkedPositions);
return true;
case R.id.managementCABShare:
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, exportItemsAndGetUris(checkedPositions));
shareIntent.setType("application/xml");
setShareIntent(shareIntent);
return true;
case R.id.managementCABExport:
String message;
if (StorageController.copyUriListToExportFolder(exportItemsAndGetUris(checkedPositions)))
message = getActivity().getString(R.string.export_success);
else
message = getActivity().getString(R.string.export_fail);
Toast.makeText(getActivity(), message + ":\n" + StorageController.getExternalExportApplicationFolder(), Toast.LENGTH_LONG).show();
return true;
default:
return false;
}
}
@Override
public void onDestroyActionMode(ActionMode mode) {
mActionMode = null;
changeCheckedOfAllItems(false);
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
private void setShareIntent(Intent shareIntent) {
if (mShareActionProvider != null) {
mShareActionProvider.setShareIntent(shareIntent);
}
}
};
आप अपने डिवाइस पर v14 का उपयोग करते हैं, या आप v14 एसडीके के खिलाफ संकलन करते हैं? –
wtf क्यों नीचे वोट ?? वैसे भी मैं अपने डिवाइस पर 4.2.2 का उपयोग करता हूं - स्पष्टीकरण के लिए संपादन की जांच करें –
यह मैं नहीं था, अगर आप v14 के खिलाफ संकलित करते हैं तो मैं पहले नवीनतम एसडीके के खिलाफ संकलन करने की कोशिश करता हूं। –