我有一个提取fragement的类,在这里我想创建包含一些usrl地址的按钮。怎么实现这个?我试过但它给了我错误,请查看我的代码并给出一些建议。
我的java类代码是
public class McaFragment extends Fragment {
Button button;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_mca, container, false);
addListenerOnButton();
return rootView;
}
public void addListenerOnButton() {
button = (Button) findViewById(R.id.button1); //getting error here in //findViewById
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent browserIntent =
new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.mkyong.com"));
startActivity(browserIntent);
}
});
}
}
答案 0 :(得分:2)
您无法直接在片段中使用findViewById
,您需要首先调用您的活动的上下文:
<强>样品:强>
getActivity().findViewById(R.id.button1);
如果您想使用片段视图中的按钮,则需要在addListenerOnButton
<强>样品:强>
//////// addListenerOnButton(rootView);
public void addListenerOnButton(View v) {
button = (Button) v.findViewById(R.id.button1); //getting error here in //findViewById
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent browserIntent =
new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.mkyong.com"));
startActivity(browserIntent);
}
});
}
答案 1 :(得分:1)
如果您的按钮位于片段布局中,则应放置:
button = (Button) rootView.findViewById(R.id.button1);
在此之前,您应该将rootView设置为全局变量,位于Button按钮下方。所以:
Button button;
View rootView;
以及稍后的onCreateView:
rootView = inflater.inflate(R.layout.fragment_mca, container, false);