android-fragments 片段内的按钮

ssm49v7z  于 2022-11-14  发布在  Android
关注(0)|答案(4)|浏览(257)

嗨,我正在创建一个应用程序,它在Fragment中使用Button,所以当我单击Button时,Button将生成一个吐司文本,我使用Button单击侦听器来代替。但问题是,我的Button没有响应单击,当我点击它的时候,Button什么也没有响应,所以我对它感到很紧张。下面是我的主要问题代码:

test = (Button) findViewById(R.id.button2);
t_layout = (TabLayout) findViewById(R.id.tabs);
t_layout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {

        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            Fragment fragment;
            String contain = tab.getText().toString();
        if(contain.equals("POWER")){
                fragment = new power_fragment();
                FragmentManager fm = getFragmentManager();
                FragmentTransaction ft = fm.beginTransaction();
                ft.replace(R.id.fragment2, fragment);
                ft.commit();

                test.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Toast.makeText(getApplicationContext(),"Test on",Toast.LENGTH_SHORT).show();
                             }
                          }
                       }
                    }
               });

我正在使用Tabitems,所以当我单击“POWER”的Tabitems时,Fragment将更改为包含测试Button的power_fragment布局。但即使单击测试Button,它也无法生成吐司文本。

k75qkfdt

k75qkfdt1#

在你的fragment类中

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View v = inflater.inflate(R.layout.fragment_my_blood_group_requests, container, false);

    btn = (Button) v.findViewById(R.id.btn);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //make your toast here
        }
    });
   return v;
  }
7d7tgy0s

7d7tgy0s2#

您不能在fragment内使用findViewById。您需要执行类似以下的操作。

test = (Button) primaryView.findViewById(R.id.button2);
test.setOnClickListener(this);

//这个primaryView是您在onCreateView上返回的容器视图;

return primaryView;

///片段应该实现View.OnClickListener

@Override
        public void onClick(View v) {
            switch (v.getId()) {
    case R.id.test:
    }
}
beq87vna

beq87vna3#

初始化power_fragment中的test按钮,并在您将test按钮放入power_fragment布局中时,将OnClickListener写入power_fragment
将以下代码放入power_fragment中

View view = inflater.inflate(R.layout.power_fragment, container, false);
Button test = (Button) view.findViewById(R.id.test);
        test.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {

            }
        });
jqjz2hbq

jqjz2hbq4#

顺便说一句,我安装了一个Click,它工作得很好

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
    }
}

相关问题