gpt4 book ai didi

java - Android Studio 在更改布局后使用 setOnTouchListener

转载 作者:行者123 更新时间:2023-12-01 18:23:53 31 4
gpt4 key购买 nike

我喜欢向右、向左滑动来切换 Activity 的布局。但是切换布局后,一旦 setOnTouchListener 停止工作。我有什么错?

我的 Activity :

import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.fragment.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;

public class MainActivity extends AppCompatActivity {

static Fragment fragment;
private int pagenumber;
private ConstraintLayout cl;
private View factory;

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


cl = findViewById(R.id.layout);
pagenumber= 0;


cl.setOnTouchListener(new OnSwipeTouchListener(MainActivity.this) {

public void onSwipeRight() {
if (pagenumber != 0)
pagenumber = pagenumber - 1;
if(pagenumber==0){
setContentView(R.layout.instruction_1);
factory = getLayoutInflater().inflate(R.layout.instruction_1, null);

cl = factory.findViewById(R.id.layout);
}
else if(pagenumber==1){
setContentView(R.layout.instruction_2);
factory = getLayoutInflater().inflate(R.layout.instruction_2, null);
cl = factory.findViewById(R.id.layout);
}

}
public void onSwipeLeft() {
if(pagenumber<2) {
pagenumber = pagenumber + 1;


if (pagenumber==1){
setContentView(R.layout.instruction_2);
factory = getLayoutInflater().inflate(R.layout.instruction_2, null);
cl = factory.findViewById(R.id.layout);
}
else if (pagenumber==2){
setContentView(R.layout.instruction_3);
factory = getLayoutInflater().inflate(R.layout.instruction_3, null);
cl = factory.findViewById(R.id.layout);
}
}

}


});

}
}

最佳答案

为什么应用程序在第一次滑动后无法工作是因为当您在用另一个布局文件替换布局文件时滑动,而您仍然引用现在不再存在的旧约束布局。

您正在尝试实现 fragment 的行为

您不应该完全替换布局文件,而是在 xml 文件中创建一个布局并替换它,或者只使用 ViewPager

我认为您正在寻找类似的东西。尝试一下

 public class MainActivity extends AppCompatActivity {

static Fragment fragment;
private int pagenumber;
private ConstraintLayout cl;
private View factory;

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


cl = findViewById(R.id.layout);
pagenumber = 0;


cl.setOnTouchListener(new OnSwipeTouchListener(MainActivity.this) {

public void onSwipeRight() {
if (pagenumber == 0) {
setContentView(R.layout.instruction_1);
pagenumber = 1;
} else if (pagenumber == 1) {
setContentView(R.layout.instruction_2);
pagenumber = 2;
} else if (pagenumber == 2) {
setContentView(R.layout.instruction_3);
pagenumber = 3;
}
}

public void onSwipeLeft() {
if (pagenumber == 1) {
setContentView(R.layout.instruction_0);
pagenumber = 0;
} else if (pagenumber == 2) {
setContentView(R.layout.instruction_1);
pagenumber = 1;
}else if (pagenumber == 3) {
setContentView(R.layout.instruction_2);
pagenumber = 2;
}

}
});
}
}

关于java - Android Studio 在更改布局后使用 setOnTouchListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60262222/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com