2012-10-03 68 views
4

我有一個活動和一個片段。該片段上有一個按鈕。android如何setOnClickListener片段按鈕

我加載片段:

fragment = new FragmentPIN(this);     
fragmentTransaction.add(R.id.content,fragment);   
fragmentTransaction.commit(); 

再試着設置監聽

@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
    try { 

     Button cmdOK_PIN = (Button)activity.findViewById(R.id.cmdOK_PIN); 
     cmdOK_PIN.setOnClickListener(new View.OnClickListener() {      
      @Override 
      public void onClick(View v) { 

      } 

     }); 

    } catch (ClassCastException e) { 
     e.printStackTrace(); 
    } 
} 

但我總是在setOnClickListener調用一個空指針異常。在我嘗試設置偵聽器之前,碎片事務已被提交。或者我認爲是。我應該使用另一個覆蓋來做到這一點?

+1

犯錯,你有你的活動按鈕,然後你想設置爲從片段onclicklistener?該活動的佈局文件中是否定義了按鈕?在使用按鈕之前,您確定該活動已經調用了setContentView嗎? – Christine

回答

10

嘗試更改將偵聽器設置爲onActivityCreated而不是onAttach的位置。根據Android docs

onActivityCreated在創建片段的活動並調用此片段的視圖層次結構時調用。

當你調用onAttach是這樣的活動已建立其觀點

1

喜即時通訊新到Android之前,並獲得該空指針異常,當我加了一些按鈕動態。片段也有一個方法onViewCreated,你可以覆蓋。 從它的名字猜你可以肯定的看法是有:)

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 

    super.onViewCreated(view, savedInstanceState); 
    }