Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Studio在更改布局后使用setOnTouchListener_Java_Android_Android Studio_Ontouchlistener - Fatal编程技术网

Java Android Studio在更改布局后使用setOnTouchListener

Java Android Studio在更改布局后使用setOnTouchListener,java,android,android-studio,ontouchlistener,Java,Android,Android Studio,Ontouchlistener,我喜欢左右滑动以切换活动的布局。但是在切换布局后,setOnTouchListener停止工作。什么是我的错 我的活动: import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.fragment.app.Fragment; import android.os.Bundle; import android.vi

我喜欢左右滑动以切换活动的布局。但是在切换布局后,
setOnTouchListener
停止工作。什么是我的错

我的活动:

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

            }


        });

    }
}
导入androidx.appcompat.app.appcompat活动;
导入androidx.constraintlayout.widget.constraintlayout;
导入androidx.fragment.app.fragment;
导入android.os.Bundle;
导入android.view.LayoutInflater;
导入android.view.view;
公共类MainActivity扩展了AppCompatActivity{
静态碎片;
专用int页码;
私人有限责任公司;
私家景厂;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.instruction_1);
cl=findViewById(R.id.布局);
页码=0;
cl.setOnTouchListener(新的OnSwipeTouchListener(MainActivity.this){
公共权利{
如果(页码!=0)
页码=页码-1;
如果(页码==0){
setContentView(R.layout.instruction_1);
factory=GetLayoutFlater().充气(R.layout.instruction_1,null);
cl=工厂findViewById(R.id.布局);
}
else if(页码==1){
setContentView(R.layout.instruction_2);
factory=GetLayoutFlater().充气(R.layout.instruction_2,null);
cl=工厂findViewById(R.id.布局);
}
}
公共void onswitpeleft(){

如果(pagenumber当您将布局文件替换为另一个布局文件时,当您仍然引用旧的受约束布局(现在已不存在)时,第一次刷卡后应用程序不工作的原因是bcz

您正在尝试实现片段的行为

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

我想你在找这样的东西。 试试看


因为您正在使用
setContentView(R.layout.instruction_1);
更改整个布局,您想实现什么?@Makarand我想用刷卡来更改活动的布局。像一本书一样,您只有3页吗?@Makarand是的,只有3页
 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;
            }

        }
    });
}
}