2013-02-01 54 views
0

我有一個EditText框和ListView活動。我也OverrideonCreateContextMenu這樣的:在onCreateContextMenu比較視圖

@Override 
    public void onCreateContextMenu(ContextMenu menu, View v, 
     ContextMenuInfo menuInfo) { 
     super.onCreateContextMenu(menu, v, menuInfo); 
     android.view.MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.comments_context, menu); 
     menu.setHeaderTitle("Available Actions"); 

     Log.d("v: ", String.valueOf(v)); 

     MenuItem Edit = menu.findItem(R.id.editComment); 
     MenuItem Delete = menu.findItem(R.id.deleteComment); 

     AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo; 


     int position = info.position; 
     ListView lv = (ListView) v; 
     int firstVisible = lv.getFirstVisiblePosition(); 
     View rowView = lv.getChildAt(position - firstVisible); 

     ReviewUser = ((TextView) rowView.findViewById(R.id.labelReviewCommentUser)).getText() 
       .toString(); 

     ReviewComment = ((TextView) rowView     .findViewById(R.id.labelReviewComment)).getText().toString(); 

這裏有問題。當我長按EditText框進行剪切/複製/粘貼/等時,系統可以調用onCreateContext。當您長時間點擊我的ListView時,也可以調用它。當系統從EditText調用onCreateContextMenu時,我在最後一行底部的兩個TextView中得到空的崩潰。

這裏是解決方案:我需要比較視圖創建onCreateConextMenu時。但是,我不知道如何做到這一點,無法在任何地方找到解決方案。我已經Logg'ed視圖V,並在我的活動的所有其他意見和它總是指向我ListView ...

如何創建代碼,說:

  if (view passed in is from ListView) { 


      MenuItem Edit = menu.findItem(R.id.editComment); 
      MenuItem Delete = menu.findItem(R.id.deleteComment); 

       // do other things 

      } 

任何人都可以指導我?我一直在尋找這一個星期...

+1

在一個地方,你聲稱「onCreateContext可以被系統調用,當我長時間剪切/複製/粘貼/等的EditText框」。在另一個地方,你聲稱「我有Logg'ed View v和我的活動中的所有其他視圖,它總是指向我的ListView」。這些陳述不可能都是真實的。 – CommonsWare

+0

@CommonsWare我該如何解釋?我'Log.d''查看v'(當然作爲一個字符串值),當我長按EditText時,得到正常的空指針崩潰,檢查'View v'(在LogCat中),它說'android.widget。 ListView控件@ 4183da90'。爲什麼傳入ListView?我沒有碰到'ListView'? - 一個想法出現在我的腦海裏,'EditText'框在我的ListView的頭部,這會有所作爲嗎? – KickingLettuce

+0

這很有趣 - 我當然不希望標題視圖表現出這種行爲。在切線相關的注意事項上,在您的其餘工作之後,嘗試執行'super.onCreateContextMenu(...)'最後。 – CommonsWare

回答

0

不是最終的解決方案,因爲發生了什麼實際上可能是一個錯誤,但只是將EditText標頭移出ListView標頭,但允許我到主XML文件繞過這個問題。