【问题标题】:android studio Viewpager OnClickListener not workingandroid studio Viewpager OnClickListener 不工作
【发布时间】:2020-05-12 21:10:37
【问题描述】:

我有一个带有 Viewpager 和适配器的主布局,因此我有多个布局,我可以在它们之间滑动。对于主布局,我有一个调用适配器的 Java 类:

public class Was_ist_Java extends AppCompatActivity implements ViewPager.OnPageChangeListener, View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_was_ist_java);

        viewPager = findViewById(R.id.viewPager);
        progressBar = findViewById(R.id.progressBar);

        mPageAdapter = new Adapter(layouts, this);
        viewPager.setAdapter(mPageAdapter);   
    Uebung()

并且应该处理多个 onclickListeners:

    private void Uebung() {
       View third = getLayoutInflater().inflate(R.layout.third, null, false);

       ImageButton reload = third.findViewById(R.id.reload);

       if(reload != null) {
           Log.d("reload", "reload");
       }

       reload.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
               Log.d("hier", "called");
          }
      });

   }

因为按钮位于第三个布局上,所以我必须为第三个布局充气。找到按钮但未调用 onclickListener

编辑: 调用片段:

Fragment test = new UebungWieFunktioniertJava();
        getSupportFragmentManager().beginTransaction().replace(R.id.viewPager,
                test).commit();

片段:

public class UebungWieFunktioniertJava extends Fragment implements View.OnClickListener {

Button one;

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedinstanceState) {
    View myView = inflater.inflate(R.layout.third, container, false);

    return myView;
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    one = getView().findViewById(R.id.compiler);
    one.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    Log.d("meistrer", "moiun");
}

}

【问题讨论】:

  • ImageButton 重载 =third.findViewById(R.id.reload);您正在将此 ImageButton 定义为位于 R.layout.main_was_ist_java 中。您无法听到来自另一个片段/活动的点击。您将不得不使用回调等。例如,在您的活动中,您将能够监听用户是否更改了页面,但不能像这样监听片段/适配器内的事件。
  • 你能给我一个例子或链接吗?
  • 我相信最简单的方法是在您使用查看器创建的片段上创建一个点击监听器stackoverflow.com/questions/34630063/…
  • 感谢您的回复,但我有同样的问题 findviewbyid 工作但 onclicklistener 没有。我已经编辑了我的问题并添加了新代码。
  • 我会发布一个更容易看到我会提出什么的答案。

标签: java android-studio button android-viewpager


【解决方案1】:

移动此代码:

one = getView().findViewById(R.id.compiler);
one.setOnClickListener(this);

onCreateView() 像这样

one = (Button) myView.findViewById(R.id.compiler);
one.setOnClickListener(this);

另外,请确保在此片段的 .xml 中 R.id.compiler 设置为按钮!

另一件事,使用 viewpager 的重点是它会管理/显示片段,因此手动导航到它是没有意义的。您的视图是否正确显示?

【讨论】:

  • 感谢您的帮助,我找到了另一个解决方案。 link
猜你喜欢
  • 2022-11-25
  • 2021-03-17
  • 1970-01-01
  • 1970-01-01
  • 2017-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多