【问题标题】:onclick Listener doesn't work in fragmentsonclick 侦听器在片段中不起作用
【发布时间】:2019-01-29 18:21:33
【问题描述】:

我在一个按钮上实现了一个 onclicklistener 来打开画廊,当我点击应用程序中的按钮时没有任何反应

代码

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    final View view = inflater.inflate(R.layout.fragment_statusfragment,container,false);
    imageView = view.findViewById(R.id.imageView);
    button = (Button)view.findViewById(R.id.button2);
    textView = view.findViewById(R.id.textView);
    view.findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getActivity(),"Upload screenshot",Toast.LENGTH_LONG).show();
            if(ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){
                requestPermissions(
                        new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                        2000);
            }else {
                Toast.makeText(getActivity(), "Choose Screenshot", Toast.LENGTH_LONG).show();
                imageView.setVisibility(View.VISIBLE);
                button.setVisibility(View.VISIBLE);
                textView.setVisibility(View.VISIBLE);
                Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                intent.setType("image/*");
                if (intent.resolveActivity(getActivity().getPackageManager()) != null) {
                    startActivityForResult(intent,1000);
                }
            }
        }
    });
// Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_statusfragment, container, false);
}

它也不显示 Toast 消息

【问题讨论】:

    标签: java android-studio onclicklistener android-button


    【解决方案1】:

    而不是return inflater.inflate(R.layout.fragment_statusfragment, container, false);return view;

    【讨论】:

      【解决方案2】:

      首先尝试在FragmentonViewCreated() 方法中完成所有UI 工作。

      这里最后没有返回上面初始化的view,而是使用button变量来实现点击监听。

      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
                               Bundle savedInstanceState) {
          final View view = inflater.inflate(R.layout.fragment_statusfragment,container,false);
          imageView = view.findViewById(R.id.imageView);
          button = (Button)view.findViewById(R.id.button2);
          textView = view.findViewById(R.id.textView);
          button.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  Toast.makeText(getActivity(),"Upload screenshot",Toast.LENGTH_LONG).show();
                  if(ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){
                      requestPermissions(
                              new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                              2000);
                  }else {
                      Toast.makeText(getActivity(), "Choose Screenshot", Toast.LENGTH_LONG).show();
                      imageView.setVisibility(View.VISIBLE);
                      button.setVisibility(View.VISIBLE);
                      textView.setVisibility(View.VISIBLE);
                      Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                      intent.setType("image/*");
                      if (intent.resolveActivity(getActivity().getPackageManager()) != null) {
                          startActivityForResult(intent,1000);
                      }
                  }
              }
          });
          // Inflate the layout for this fragment
          return view;
      }
      

      【讨论】:

        【解决方案3】:

        您已经在开头初始化inflater.inflate(R.layout.fragment_statusfragment, container, false); 并将其分配给View view,所以最后只需return view;

        【讨论】:

          猜你喜欢
          • 2014-04-20
          • 1970-01-01
          • 1970-01-01
          • 2022-01-14
          • 1970-01-01
          • 1970-01-01
          • 2017-12-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多