ContextMenu показывает элемент, который я не указал в context_menu.xml - PullRequest
0 голосов
/ 23 февраля 2011

Я Android нуб. Я работаю с MyEclipse, ADT, SDK, Android 2.2, API 8.

Моя активность выглядит так -

package com.vvittal.relativelayout;

import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.AdapterView.AdapterContextMenuInfo;

public class Login extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    registerForContextMenu(findViewById(R.id.uEntry));
    registerForContextMenu(findViewById(R.id.pwdEntry));
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.login_menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item){
    switch (item.getItemId()){
    case R.id.agency_item: System.out.println("----------------"); 
    return true;
    case R.id.prod_cat_item: System.out.println("++++++++++++++++"); 
    return true;
    default: return super.onOptionsItemSelected(item);
    }
}

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.context_menu, menu);
    //menu.f
    //menu.setHeaderTitle("Your Options");
}

@Override
public boolean onContextItemSelected(MenuItem item){
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
    switch (item.getItemId()) {
    case R.id.option1: ;
    return true;
    case R.id.option2:
        return true;
    default:
        int i = item.getItemId();
        return super.onContextItemSelected(item);
    }
}
}

А мой AndroidManifest.xml выглядит так -

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.vvittal.relativelayout"
  android:versionCode="1"
  android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".Login"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>
</manifest>

context_menu.xml как показано ниже -

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/option1"
      android:title="@string/yes" />
<item android:id="@+id/option2"
      android:title="@string/no" />
</menu>

В меню моего эмулятора есть пункт «Метод ввода», в дополнение к «Да» и «Нет», которые я указал в XML.

Я хотел бы знать, откуда поступает этот дополнительный элемент «Метод ввода», когда я не указал ни одного в xml? И как мне удалить это программно?

1 Ответ

0 голосов
/ 23 февраля 2011

Я хотел бы знать, откуда появляется этот дополнительный элемент «Метод ввода», когда я не указал ни одного в xml?

Операционная система добавит варианты контекстного менюпо мере необходимости для виджета.В случае EditText виджетов это будет включать такие вещи, как вырезание, копирование, вставка, выделение всех и выбор метода ввода.

Также, как удалить это программно?

Пожалуйста, не надо.Во-первых, они там, чтобы помочь пользователю.Во-вторых, они являются стандартными для платформы, и пользователи могут раздражаться, если они недоступны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...