我想在片段内创建按钮?

时间:2014-06-26 21:08:52

标签: android url android-fragments actionlistener layout-inflater

我有一个提取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);

            }

        });

    }

}  

2 个答案:

答案 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);