针对上下文菜单定位不同的API

时间:2014-08-09 15:39:06

标签: android android-contextmenu

在完成我的简单程序并发布它之后,我今天又回到了阅读本书,并且我在第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 个答案:

答案 0 :(得分:0)

对不起,我不是在想。

根据您发布的内容,您没有上下文操作栏的代码。因此,您将看不到上下文操作栏。我甚至不知道你是否有常规操作栏 - 你可能会这样做,但这取决于AppTheme的定义。

您的代码将显示旧式上下文菜单。

  

这会成为一个问题吗?

这取决于你对“问题”的定义。使用API​​ Level 15+设备上的上下文菜单(即使用中的绝大多数Android设备)对某些人来说会过时。