在SherlockFragment中创建一个onclicklistener

时间:2012-08-02 12:40:28

标签: java android button onclick actionbarsherlock

你好我想在sherlockfragment中创建一个点击监听器但是每次我点击它时都显示“view.class source not found”无论我做什么动作我都想用它开始一个意图改变活动

这是我的代码:

public class SafanTab extends SherlockFragment {

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

    return inflater.inflate(R.layout.safantab, container, false);

}

public void onOverClick(View view) {
    Intent myIntent = new Intent(view.getContext(), OverSafan.class);
    startActivityForResult(myIntent, 0);
    }


public void nProductenClick(View view) {
    Intent myIntent = new Intent(view.getContext(), Over_Safan.class);
    startActivityForResult(myIntent, 0);
    }


public void onTwitterClick(View view) {
    Intent myIntent = new Intent(view.getContext(), Over_Safan.class);
    startActivityForResult(myIntent, 0);
    }

}

我定义了布局xml中按钮的监听器:

android:onClick="OnOverClick"

我尝试了很长时间,并在网上搜索“未找到View.class源”但找不到任何解决我问题的方法。正如您在问题中所看到的,我正在使用ActionBarSherlock。

2 个答案:

答案 0 :(得分:2)

您不会在片段中获得onOverClick回调。在onActivityCreated()方法中使用以下内容。

    // Handle onclick
    getView().findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            // do something
        }
     });

有关更多选项,请参阅此问题:How to handle button clicks using the XML onClick within Fragments

修改 对于onCreateView,您可以执行以下操作:

  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
     View view = inflater.inflate(R.layout.my_layout, container, false);
     view.findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            // do something
        }
     });
     return view;
  }

答案 1 :(得分:-1)

不确定这是否是问题,但我发现您的方法名称定义为:

public void onOverClick(View view)

但是在您指定的XML中:

android:onClick="OnOverClick"

字母“O”在xml中大写。