安卓工作室Viewpager OnClickListener不工作。

问题描述 投票:0回答:1

我有一个主布局和一个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。

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

Fragment:

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");
}

}

java android-studio button android-viewpager
1个回答
0
投票

移动这段代码。

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的重点是它会管理显示碎片,所以手动导航到它是没有意义的。你的view displyaing正确吗?

© www.soinside.com 2019 - 2024. All rights reserved.