2011-08-31 208 views
0

我想在我的InputMethodService中創建一個ContextMenu。ContextMenu拋出一個空指針異常

它會發起的

private ContextMenu ContextMenuInfo = null; 

然後內OnLongClick它

ContextMenuInfo.setHeaderTitle("hello!"); 
ContextMenuInfo.add("aaa!"); 
ContextMenuInfo.add("bbb!");     
mInputView.createContextMenu(ContextMenuInfo); 

,但它拋出一個NullPointerException。任何想法可能會失蹤?

謝謝!

編輯:

試圖與

public void onCreateContextMenu(ContextMenu menu, View v, 
ContextMenuInfo menuInfo) { 

menu.setHeaderTitle("Choose an option"); 
menu.add(0, v.getId(), 0, "Add to favorites"); 
menu.add(0, v.getId(), 0, "See details"); 

} 

和longclick內

registerForContextMenu(v); 
openContextMenu(v); 

但他們都給予

方法registerForContextMenu(查看)是未定義的類型新的View.OnLongClickListener(){}

+0

你在哪裏爲ContextMenuInfo指定了除null之外的任何東西? –

+0

...除setHeaderTitle和add外還應該分配什麼? – Roger

+0

您需要回到書中的第1章並閱讀如何實例化對象。 –

回答

3

所以...你設置ContextMenuInfonull,然後你嘗試調用它的方法,你會得到一個NullPointerException。這應該不會令人驚訝。你基本上打電話null.setHeaderTitle("hello!");

+0

ok,那麼應該如何設置? – Roger

+0

看看這個文檔:http ://developer.android.com/guide/topics/ui/menus.html#context-menu – kabuko

+0

嘗試過,請參閱上面的修改。 – Roger

1

如果不先實例化ContextMenuInfo對象(或任何對象),則無法調用該方法。

Link用於爲視圖創建上下文菜單。

+0

謝謝,並列,請參閱上面的編輯。 :) – Roger

+0

這裏的錯誤主要是由於對Java語言的工作原理缺乏瞭解,以及Android結構的開發方式。我建議刷新一些java的基礎知識,以及閱讀android開發人員網站上的操作指南。有完整的章節介紹如何在文檔和示例中創建視圖併爲其分配上下文菜單。 –

+0

對不起,但這部分在哪裏? http://developer.android.com/guide/topics/ui/menus.html這裏我只找到了上面的簡短示例,它適用於活動,而不適用於視圖。所以如果可以的話,請給出一個快速提示如何解決這個菜單的觀點。或者該論壇的其他內容是什麼?每個問題都可以通過「去看書」來回答。 :/ – Roger

3

onCreate(),有行:

Button b = (Button) findViewById(R.id.myButton); 
registerForContextMenu(b); 

然後,你必須運行在onCreateContextMenu這些命令(或者,更理想的是,膨脹從資源XML文件的上下文菜單):

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 

    menu.setHeaderTitle("Choose an option"); 
    menu.add(0, v.getId(), 0, "Add to favorites"); 
    menu.add(0, v.getId(), 0, "See details"); 
} 
+0

謝謝,但registerForContextMenu(b)線仍然給「方法registerForContextMenu(按鈕)是不確定的類型TotalKeyboard」:(考慮「公共類TotalKeyboard擴展InputMethodService」 – Roger

+0

您是否嘗試註冊上下文菜單在'TotalKeyboard 'class?該方法只能在'Activity'中使用,並且參數必須是'View'對象,或'View'的子類。 – Phil

+0

[This](http://www.stealthcopter.com/blog/) 2010/04/android-context-menu-example-on-long-press-gridview /)博客也可能有幫助。 – Phil