2017-01-03 62 views
0

我正在嘗試使用3個片段進行選項卡活動。我的一個片段也有一個按鈕,與被調用函數的onClick:Android - 從片段調用函數

<Button 
    android:text="Start meeting" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="58dp" 
    android:id="@+id/sp_live_meeting" 
    android:layout_below="@+id/live_cost" 
    android:layout_centerHorizontal="true" 
    android:onClick="sp_timer" /> 

的片段在coresponding類文件創建:

public class LiveMeeting_meeting_fragment extends Fragment { 

Button sp; 
Button stop; 
Chronometer chrono; 
int cnt = 0; 
long timeStop; 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.livemeeting_meeting_fragment, container, false); 
    sp = (Button) rootView.findViewById(R.id.sp_live_meeting); 
    stop = (Button) rootView.findViewById(R.id.stop_live_meeting); 
    chrono = (Chronometer) rootView.findViewById(R.id.live_timer); 
    return rootView; 
} 

public void sp_timer(View view){ 
    if(cnt == 0){ 
     sp.setText("Pause meeting"); 
     chrono.setBase(SystemClock.elapsedRealtime() + timeStop); 
     chrono.start(); 
     cnt = 1; 
    } else if (cnt == 1){ 
     sp.setText("Continue meeting"); 
     chrono.stop(); 
     timeStop = chrono.getBase() - SystemClock.elapsedRealtime(); 
     cnt = 0; 
    } 

} 
} 

我的問題是,現在,我是不能夠調用函數,因爲它告訴我它找不到函數:

java.lang.IllegalStateException: Could not find method sp_timer(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'sp_live_meeting' 

我該如何解決這個問題?

+2

不要使用'onClick'屬性。它只能用於活動。用'View#setOnClickListener()'手動設置點擊方法。 – DeeV

回答

4

從XML中刪除onClick屬性,改爲使用onClickListener

代碼:

Button btn = (Button) findViewById(R.id.mybutton); 

btn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     //write your sp_timer method here 
    } 
}); 

的Android只查找當前活動的onClick方法sp_timer()。如果您使用片段,這一點很重要,因爲即使使用片段添加上面的XML,Android也不會在用於添加XML的片段的.java文件中查找onClick方法。

+0

謝謝,它的工作 – Leonzen