onCreateContextMenu()のためのEditText動作しない実装
-
25-09-2019 - |
質問
った試験は私のアプリケーションの実装("HTC Desire Z Android2.2).を見つける私のコメニューが動作しない全く EditText
s.その文脈のメニュー作品に ListView
, ImageView
います。にエミュレータも作品。--------
きをタップEditTextでのようなものズームフレームとしてマークを異なAndroid標準人)コンテキストメニューを読み取る:"文字列","を選択します。示されない私のメニューを取り揃えております。ここでは画面表示:
ないマイメニューのようにエミュレータ- はこちらを参照してください
こちらのソースコードの自動
public class MyActivity extends Activity
{
private static final String TAG=MyActivity.class.getName();
EditText editText;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editText=(EditText )findViewById(R.id.editText);
this.registerForContextMenu(editText);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo)
{
Log.v(TAG, "Creating context menu for view="+view);
menu.add(Menu.NONE, Menu.FIRST+1, Menu.NONE, "Test menu");
super.onCreateContextMenu(menu, view, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item)
{
Log.v(TAG, "Context item selected as="+item.toString());
return super.onContextItemSelected(item);
}
}
私は徹底的にデバッグ/ログインも自分のコードだ。onCreateContextMenu()ないものというもので登録された正します。
以下-何ができるのですか?な関連HTC特殊性?
解決
そう思いだけはあHTCメニューです。
のグラフィカル編集コンテキストメニューですが見ていると思い、より近いモデル(希望HDいます。私(コード)を作ったポップアップテキストメニューのHeaderTitleセットとしてテキストを編集"を一覧などすべて選択','コピー','ペーストです。でも、私も入って試験メニュー".
発生しまった場合onCreateContextMenu()が呼び出されうListViewとImageView、"メニュー"し、指定されたオブジェクトと呼ん前の人口によるデフォルトです。の場合には、EditTextでは設計とクリップボードにそのようなシステムを提供する前に人口の多メニューに基づくEditTextのコンテンツの状態(例えば、テキストを選択し、'コピー'オプション;があればテキストのクリップボードを'Paste'オプション;---とする。
ことができたコンテキストメニューの"編集"を選択することによりオプションによる清算のヘッダおよび内容を変更コー---
@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo)
{
Log.v(TAG, "Creating context menu for view="+view);
// Clear current contents
menu.clearHeader();
menu.clear();
menu.setHeaderTitle("TEST MENU");
menu.add(Menu.NONE, Menu.FIRST+1, Menu.NONE, "Test menu");
super.onCreateContextMenu(menu, view, menuInfo);
}
の事実を取得しているグラフィカルなメニュー(おそらくらContextMenu)は上記の技術が成り立たないと思うので、周辺のこのインスタンスを生成する独自のContextMenuオブジェクトを使用してください渡されるonCreateContextMenu().
私は徹底的にデバッグ/ログインも自分のコードだ。onCreateContextMenu()ないものという
このように非常に奇明らかで求められていましたが、私にとっておきのContextMenuが渡されます。
編集1: 再考すること述したすらタップのEditTextであることだって(短いタッチダウンして、指まで)?
マContextMenuしていますをご利用の長プレス/クランプを長押しして約1秒)。きをタップするだけでタッチマEditTextのソフトキーボードが表示された場合、キーボードがすでに可視にカーソルで移動を別の位置にEditTextます。
あの欲望Zは、物理キーボードとの原因となる若干異なる行動についての希望Zとバージョンの異なる感によるユーザーインタフェースに私の思い).
こonCreateContextMenu()がないというだといえば、こんなContextMenuはその他のタイプのポップアップのUI要素になります。少なくともその論理的な内容を理解することができます。
できることを確認するもので、長さ'を押しな作ContextMenuきましては、長く押す。
またを長押ししてからの修正のコードとしており...
実施OnClickListener
public class MyActivity extends Activity implements OnLongClickListener {
セットのリスナー editTextでonCreate...
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); editText=(EditText )findViewById(R.id.editText); this.registerForContextMenu(editText); editText.setOnLongClickListener(this); // <-- ADD THIS }
追加のリスナーコー---
@Override public boolean onLongClick(View arg0) { android.util.Log.v(TAG, "onLongClick() called"); if (arg0 == editText) { android.util.Log.v(TAG, "arg0 == editText"); Toast.makeText(this, "onLongClick intercepted", 2000).show(); return true; } else { android.util.Log.v(TAG, "arg0 != editText"); return false; } }
これにより、私が切片を長く押すと、'true'ならonLongClick()私に指示するシステムん'消費のイベントが、うまくいきませんで手渡を向上させることができ、創造のContextMenu.
でいない場合はできるようになりまし短いタップが原因とポップアップにが表示され、その実施OnClickListener、オonClick()を使っています)。
のオブジェクトの行使することができる遮どの原因とな創造のポップアップだけを見て、それを作成しようと、自分らしいContextMenu.
他のヒント
これは、標準的なカット/コピーです/あなただシーイングメニューを貼り付けます。
詳細については、このトピックを参照してください。
どのように私は自分のコンテキストを書くことができますコピーのメニューは&ペーストですか
よろしく HJW