2012-12-26 80 views
0

我想在用戶單擊活動的片段中的按鈕時彈出上下文幫助。我曾嘗試使用Toast執行此操作,但徒勞無功。彈出的對話框不顯示(請注意Use Toast inside Fragment中的建議沒有幫助)。Toast in a fragment does not show

我在片段類代碼被寫在下面:

  final Button help = (Button) view.findViewById(R.id.help_button); 
     del.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View v) { 
      Context context = (TabsActivity) getActivity().getApplicationContext(); 
      CharSequence text = "Hello toast!"; 
      int duration = Toast.LENGTH_LONG; 
      Toast toast = Toast.makeText(view.getContext(), text, duration); 
      toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); 
      toast.show(); 
      } 
     }); 

我曾嘗試的CONTEXT若干變化,其中的兩個在代碼被示出。 我也試過getActivity(),getView().getContext(),getContext()所有這些都是徒勞的。你能幫助理解如何在一個片段中設置CONTEXT嗎?

 final Button help = (Button) view.findViewById(R.id.help_button); 
     del.setOnClickListener(new View.OnClickListener(){ 

不應該是閱讀(注意,現在的幫助是獲得這個的onclick聽衆):

 final Button help = (Button) view.findViewById(R.id.help_button); 
     help.setOnClickListener(new View.OnClickListener(){ 
+0

您的上下文(荷蘭國際集團)是有點好。繼續使用'view.getContext()',除了寫'v.getContext()'!我見過的大多數代碼完全忘記了從視圖參數中獲取上下文。 – petey

回答

1
在你的代碼

 Context context = getActivity().getApplicationContext(); 
     Toast.makeText(context, "Hello toast!", Toast.LENGTH_LONG).show(); 

保持簡單並從那裏開始工作,因此您可以確定哪個位實際上會導致您的錯誤。

認沽登錄到您的代碼,那麼你可以決定當你的聽衆的onClick實際使用,而不是依賴吐司

setOnClickListener(new View.OnClickListener(){ 
    @Override 
    public void onClick(View v) { 
      Log.d("MyTag", "Button 1 was pressed"); 
    } 
} 
+0

與var名稱 – Blundell

+0

的好處也使用'v.getContext()'在setonclicklistener參數中傳遞。 – petey

+0

非常感謝您指出。拍攝呀!我不能相信我錯過了,花了兩個小時弄清楚了!這是複製粘貼的惡魔。 – user1124702

5

再次使用你的應用環境,而不是讓它從視圖

4

使用簡單getActivity()沒有其他的東西。不需要投射或者獲取應用程序上下文。

我用Toast.makeText(getActivity(), "Simple Toast",1000).show();

,它爲我工作。

0

試試這個,

Toast toast = Toast.makeText(getActivity().getApplicationContext(), "text", 100); 
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); 
toast.show();