Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.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中的意图错误(训练应用程序)_Java_Android_Xml_Android Studio - Fatal编程技术网

Java Android Studio中的意图错误(训练应用程序)

Java Android Studio中的意图错误(训练应用程序),java,android,xml,android-studio,Java,Android,Xml,Android Studio,对于我的学校项目,我目前正在做一个简单的锻炼应用程序。但我被困在倒计时上,因为应用程序一直在崩溃。首先,有一些受欢迎的屏幕;然后,你开始做你自己的锻炼(选择锻炼、休息和轮数)。它工作得很好,甚至可以使用Intent将所有这些变量放到下一个类中。下面是按钮下一步代码: next.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Intent my

对于我的学校项目,我目前正在做一个简单的锻炼应用程序。但我被困在倒计时上,因为应用程序一直在崩溃。首先,有一些受欢迎的屏幕;然后,你开始做你自己的锻炼(选择锻炼、休息和轮数)。它工作得很好,甚至可以使用Intent将所有这些变量放到下一个类中。下面是按钮下一步代码:

    next.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent myIntent = new Intent(CustomWorkout.this, GetReady.class);
            myIntent.putExtra("all_exercises", Exercises); //arraylist of exercises
            myIntent.putExtra("total_rounds", total_rounds); //number of rounds
            myIntent.putExtra("total_rest", total_rest); //rest time
            startActivity(myIntent);
        }
    });
正如您在上面所看到的,然后我调用GetReady()类,这是一个简单的5秒倒计时,用于为第一个练习做好准备准备就绪如下所示:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.getready);

    getReady();
}


public void getReady(){
    timer = (TextView) findViewById(R.id.timer);
    cTimer= new CountDownTimer(5000, 1000) {

        public void onTick(long millisUntilFinished) {
            timer.setText("" + millisUntilFinished / 1000);

        }

        public void onFinish() {
            startActivity(new Intent(GetReady.this, Exercises.class));
        }
    }.start();
}
现在是错误(以及应用程序崩溃)。在完成倒计时后,我调用Exercise()类(这是一个屏幕,显示当前练习的名称和按钮done->单击后再次启动倒计时计时器)。代码:


您必须在GetReady中传递数据,以便在练习中访问它们。为了编写更少的代码,我将它们放入一个
包中
,然后简单地传输这个

OnClickListener
中:

next.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        Intent myIntent = new Intent(CustomWorkout.this, GetReady.class);
        Bundle b = new Bundle();
        b.putSerializable("all_exercises", Exercises); //arraylist of exercises

        b.putInt("total_rounds", total_rounds); //number of rounds
        b.putInt("total_rest", total_rest); //rest time
        myIntent.putExtra("myData", b);
        startActivity(myIntent);
    }
});
在GetReady.java中:

在exercises.java中:

Intent i=getIntent();
Bundle b=i.getBundleExtra(“myDataFromGetReady”);
//现在从包中获取数据:
所有_练习=(ArrayList)b.getSerializable(“所有_练习”);
轮数=b.getInt(“总轮数”,-1);
练习名称=(TextView)findViewById(R.id.exercise\u name);
练习名.setText(所有练习名.get(0));
最终按钮完成=(按钮)findViewById(R.id.done);
// ... 等等

如果它崩溃了,请分享Logcat中的堆栈跟踪对不起,我是应用程序编程新手。编辑的原始帖子。看起来你得到了一个NullPointerException,因为你忘了在GetReady中传递来自Intent的数据,所以练习中的getIntent()没有多余的内容。所以我需要在GetReady类中声明Intent,获取变量并将它们提交给练习(在转发到倒计时类的练习中也要这样做)?我认为Intent在phpBasic中类似于会话变量,基本上是的,对我来说,它更像是Android系统内通信的信封。它可能包含非常不同的信息片段,这取决于您想用它做什么
FATAL EXCEPTION: main
   Process: com.msimonic.worldofworkout, PID: 8968
   java.lang.RuntimeException: Unable to start activity ComponentInfo{com.msimonic.worldofworkout/com.msimonic.worldofworkout.Exercises}: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
   at android.app.ActivityThread.-wrap11(ActivityThread.java)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:148)
   at android.app.ActivityThread.main(ActivityThread.java:5417)
   at java.lang.reflect.Method.invoke(Native Method)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference
   at com.msimonic.worldofworkout.Exercises.onCreate(Exercises.java:39)
   at android.app.Activity.performCreate(Activity.java:6237)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
   at android.app.ActivityThread.-wrap11(ActivityThread.java) 
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
   at android.os.Handler.dispatchMessage(Handler.java:102) 
   at android.os.Looper.loop(Looper.java:148) 
   at android.app.ActivityThread.main(ActivityThread.java:5417)
next.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        Intent myIntent = new Intent(CustomWorkout.this, GetReady.class);
        Bundle b = new Bundle();
        b.putSerializable("all_exercises", Exercises); //arraylist of exercises

        b.putInt("total_rounds", total_rounds); //number of rounds
        b.putInt("total_rest", total_rest); //rest time
        myIntent.putExtra("myData", b);
        startActivity(myIntent);
    }
});
public void getReady(){
    timer = (TextView) findViewById(R.id.timer);
    cTimer= new CountDownTimer(5000, 1000) {

        public void onTick(long millisUntilFinished) {
            timer.setText("" + millisUntilFinished / 1000);

        }

        public void onFinish() {
            Bundle b = GetReady.this.getIntent().getBundleExtra("myData");
            Intent myNextIntent = new Intent(GetReady.this, Exercises.class);
            myNextIntent.putExtra("myDataFromGetReady", b); 
            startActivity(myNextIntent);
        }
    }.start();
}
Intent i = getIntent();
Bundle b = i.getBundleExtra("myDataFromGetReady"); 

// now get the data from the Bundle: 
all_exercises = (ArrayList<String>) b.getSerializable("all_exercises"); 
rounds= b.getInt("total_rounds", -1);

exercise_name = (TextView) findViewById(R.id.exercise_name);
exercise_name.setText(all_exercises.get(0));

final Button done=(Button) findViewById(R.id.done);

// ... and so on ...