Ориентация на разные API для контекстного меню
Я вернулся к чтению этой книги сегодня после того, как закончил свою простую программу и опубликовал ее, и я остановился на главе 18, которая посвящена контекстным меню, в любом случае я читаю это:
С контекстными действиями ситуация более сложная, вы по-прежнему определяете один ресурс меню, но вы реализуете два отдельных набора обратных вызовов, один для контекстной панели действий и один для плавающих контекстных меню.
Теперь я волнуюсь, так как я смотрел только на ссылку для реализации контекстных меню, я не слишком много читал об этом, поэтому я на самом деле не нацелился на две вещи.
У меня есть контекстное меню с параметрами без значков, только текст.
Это будет проблемой?
Я проверил это на API 8 и 17 и 18, но это то же самое.
menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/menu_rename" android:title="Rename" />
<item android:id="@+id/menu_delete" android:title="Delete" />
</menu>
Код
я использую registerForContextMenu(getListView())
поэтому я могу обработать вид и использовать:
@Override
public void onCreateContextMenu(ContextMenu menu , View v , ContextMenu.ContextMenuInfo menuInfo){
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getActivity().getMenuInflater();
inflater.inflate(R.menu.notes_handler_menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item){
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
if(item.getItemId() == R.id.menu_rename){
// do something
}
return false;
}
Не нужно было помещать весь код, так как проблем нет. Я только хотел знать, не вызовет ли это проблемы на более ранних устройствах до API 11 или после.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.appabdulmohsen.subjectstracker"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:icon="@drawable/iconsubjecttracker"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.appabdulmohsen.subjectstracker.SubjectList"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Activity_subject_tracking"
android:label="@string/app_name"
>
<meta-data android:name="android.support.PARENT_ACTIVITY"
android:value=".SubjectList"
/>
</activity>
<service android:name=".Service_reminder"></service>
<activity
android:name=".activity_todialog_notecontent"
android:label="@string/app_name"
android:theme="@android:style/Theme.Dialog"
android:excludeFromRecents="true"
></activity>
</application>
</manifest>
-
мой вопрос прост, достаточно ли того, что я использовал для api 8 и выше? или мне нужно реализовать другие методы?
1 ответ
Извините, я не думаю прямо.
У вас нет кода для контекстной панели действий, основанной на том, что вы опубликовали. Следовательно, вы не увидите контекстную панель действий. Я даже не знаю, есть ли у вас обычная панель действий - вы, вероятно, делаете, но это будет зависеть от определения AppTheme
,
Ваш код вызовет контекстное меню старого стиля.
Это будет проблемой?
Это зависит от вашего определения "проблемы". Использование контекстного меню на устройствах API уровня 15+ (т. Е. Подавляющем большинстве используемых устройств Android) для некоторых людей покажется устаревшим.