0

您好,我想在 sherlockfragment 中创建一个单击侦听器,但每次单击它时,它都会显示“未找到 view.class 源”不管我做什么操作我都想用它来启动更改活动的意图

这是我的代码:

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。

4

2 回答 2

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;
  }
于 2012-08-02T13:08:26.217 回答
-1

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

public void onOverClick(View view)

但在您指定的 XML 中:

android:onClick="OnOverClick"

字母“O”在 xml 中大写。

于 2012-08-02T13:07:41.140 回答