2012-08-08 72 views
12

我有一個應用程序,我正在現代化。此過程的一個步驟是更改爲基於碎片的佈局(使用支持庫中的碎片)。 我把我的活動轉換成碎片,並得到了很好的佈局(使用ViewPager,很酷的東西!)片段實現OnClickListener

我有我的活動實現OnClickListener我所有的按鈕需求。我有新的Fragment化身當然做同樣的事情,但它看起來像「onClick」永遠不會受到打擊。碎片有什麼特別之處,阻止它們以這種方式工作?

+1

我假設你的意思是它的實現呢?在中,'公共類YourFrag擴展Fragment實現OnClickListener'?如果是這樣,你能告訴我們你如何附加監聽器以及'onClick'方法嗎? – Eric 2012-08-08 03:15:36

+0

你在onCreateView方法中找到了ViewViewId,然後在onActivityCreated方法中附加了監聽器? – 2012-08-08 03:18:29

+0

哎呀,哇,我有點過度了。是的,我的意思是實施,對不起。我findViewByIding並在Update()方法中附加偵聽器。說到這一點,那實際上甚至是一件事情?我甚至沒有一個onActivityCreated方法。嗯 – Nick 2012-08-08 03:22:28

回答

32

只是做一個這樣

public class fragmentOne extends Fragment implements OnClickListener { 
    Button myButton; 

    @Override 
    public View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedinstanceState) { 
     View myView = inflater.inflate(R.layout.fragment_1, container, false); 
     myButton = (Button) myView.findViewById(R.id.myButton); 
     myButton.setOnClickListener(this); 
     return myView; 
    } 

    @Override 
    public void onClick(View v) { 
     // implements your things 
    } 
} 

很簡單

+1

'擴展片段' – bcorso 2014-07-25 21:08:38

+0

簡單的事情是最不尋常的。但只有智者才能看到它。非常感謝。試圖想象它很多小時。 – 2015-10-03 18:00:56

+0

我忘了: myButton.setOnClickListener(this); 哦,男人@@!浪費了我很長時間後回來與Android的時間。謝謝。 – 2016-07-23 15:34:54

2

我想對作者Abhijit查克拉的回答發表評論,但似乎我需要有50個代表了點。對於那些誰是想,如果你不能使用作者Abhijit的答案,這是因爲:

public void OnClick(View v) { 
    // implements your things 
} 

你需要確保它的onClick,不是的OnClick。幸運的是,Android Studio內部錯誤消息來拯救。

8

我將重點用於全球訪問的OnClick行動,你必須做這樣的項目,必須實現View.OnClickListener,然後覆蓋的方法 的OnClick(),在OnCreateView()必須這樣做button_submit.setOnClickListener(this);爲您需要的意見, 請參閱下面的代碼清除答案,謝謝。

public class New_Project extends Fragment implements View.OnClickListener{ 

       private View mView; 
       private EditText edttxt_projectname; 
       private Button button_submit; 

       @Override 
       public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

        mView = inflater.inflate(R.layout.fragment_newproject, container,false); 
        edttxt_projectname=(EditText)mView.findViewById(R.id.edttxt_projectname); 
        button_submit=(Button)mView.findViewById(R.id.button_submit); 

        button_submit.setOnClickListener(this); 

        return mView; 
       } 


       @Override 
       public void onClick(View v) { 
        switch (v.getId()) { 
        case R.id.button_submit: 
         edttxt_projectname.setText("Test Submit!#@%!#%"); 
         break; 
       default: 
         break; 
        } 

       } 
    } 
0
view.setOnLongClickListener(new View.OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
    switch (v.getId()) { 
     case R.id.imgView1: 
     Toast.makeText(getActivity(), "Long pressing", Toast.LENGTH_SHORT).show(); 
     updateImage(); 
     break; 
     case R.id.imgView2: 
     Toast.makeText(getActivity(), "Long pressing", Toast.LENGTH_SHORT).show(); 
     updateImage(); 
     break; 
     case R.id.imgView3: 
     Toast.makeText(getActivity(), "Long pressing", Toast.LENGTH_SHORT).show(); 
     updateImage(); 
     break; 
     default: 
     break; 
    }