首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >android studio Viewpager OnClickListener无法正常工作

android studio Viewpager OnClickListener无法正常工作
EN

Stack Overflow用户
提问于 2020-05-13 05:10:37
回答 1查看 37关注 0票数 0

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

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
    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

编辑:调用片段:

代码语言:javascript
运行
复制
Fragment test = new UebungWieFunktioniertJava();
        getSupportFragmentManager().beginTransaction().replace(R.id.viewPager,
                test).commit();

片段:

代码语言:javascript
运行
复制
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");
}

}

EN

回答 1

Stack Overflow用户

发布于 2020-05-14 05:13:07

移动此代码:

代码语言:javascript
运行
复制
one = getView().findViewById(R.id.compiler);
one.setOnClickListener(this);

onCreateView() 就像这样的

代码语言:javascript
运行
复制
one = (Button) myView.findViewById(R.id.compiler);
one.setOnClickListener(this);

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

另一件事,使用viewpager的要点是它将管理/显示片段,所以手动导航到它没有任何意义。您的视图显示正确吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61761997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档