2014-09-22 63 views
2

我在片段中有一個按鈕,對於那個按鈕,我重寫了onClick()方法,但它不起作用。 當按鈕被點擊時,我也有一個Taost和一個日誌。片段中的按鈕不起作用點擊時

public class DataShown extends Fragment implements OnClickListener{ 

Button tv; 
TextView textview; 
Activity activity=getActivity(); 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    Log.d("3", "started"); 
    View rootView = inflater.inflate(R.layout.datashown, container, false); 
    Log.d("3", "closed"); 
    textview=(TextView) rootView.findViewById(R.id.textView1); 
    tv = (Button) rootView.findViewById(R.id.configButton); 
    tv.setOnClickListener((OnClickListener) activity); 
return rootView; 
}//onCtreate 

@Override 
public void onClick(View arg0) { 
    // TODO Auto-generated method stub 
    Log.d("onClick","1"); 
    Toast.makeText(activity, "on click", Toast.LENGTH_SHORT).show(); 
} 
} 

爲什麼它的發生,我不知道,可能是它的愚蠢的錯誤。 現在吐司顯示錯誤,接受上下文對象,所以我提供了活動,不工作。

+1

使用'tv.setOnClickListener(this);'。片段實現'OnClickListener'。在片段附加到活動後也使用'getActivity()'。 – Raghunandan 2014-09-22 06:57:33

回答

1

變化

tv.setOnClickListener((OnClickListener) activity); 

tv.setOnClickListener(this); 

onClick方法變更

Toast.makeText(activity, "on click", Toast.LENGTH_SHORT).show(); 

Toast.makeText(getActivity(), "on click", Toast.LENGTH_SHORT).show(); 

並刪除

Activity activity=getActivity(); 

因爲您確實在片段附加到活動之前啓動它。

+0

爲什麼它在編寫Activity activity = getActivity()時不工作? – 2014-09-22 07:15:09

+0

@RaghavendraShivhare因爲在你的情況下'activity'爲空,要麼按照我的建議使用,要麼在'onCreateView'方法中初始化'activity'。 – 2014-09-22 07:16:47

+0

好吧,我明白了,那是一個錯誤,謝謝。 – 2014-09-22 07:19:58

0

Yon可以這樣做: tv.setOnClickListener(getActivity);

1

您正在片段中創建視圖,但將單擊監聽器綁定到該活動。 tv.setOnClickListener(this);因爲片段是一個tat重寫onClick監聽器而不是活動

+0

感謝您澄清我的疑問。 – 2014-09-22 07:05:50

+0

片段類正在實現接口'OnClickListener' – Raghunandan 2014-09-22 07:07:38

0

這是您的上下文中的問題setOnClickListener,您需要給您的活動上下文工作正常。

setOnClickListener(getActivity);會將動作上下文傳遞給onclicklistner。