我有一个主布局和一个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");
}
}
移动这段代码。
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正确吗?