Ориентация на разные 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) для некоторых людей покажется устаревшим.

Другие вопросы по тегам