在 java 中启动第二个活动时应用程序崩溃。在这种情况下,第二个活动的代码
package com.example.arseny.myapplication;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringWriter;
import java.io.Writer;
public class Activity_Two extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String licence = getStringFromRawResource(getInputSteam(R.raw.licence));
TextView result = (TextView)findViewById(R.id.textView);
result.setText(licence);
}
@NonNull
private String getStringFromRawResource(InputStream inputStream) {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
Writer writer = new StringWriter();
try {
String line;
while ((line = bufferedReader.readLine()) != null) {
writer.write(line);
writer.append("\n");
}
bufferedReader.close();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
return writer.toString();
}
private InputStream getInputSteam(int rawId) {
return getResources().openRawResource(rawId);
}
}
在 Android 监视器中给出以下错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.arseny.myapplication, PID: 26546
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.arseny.myapplication/com.example.arseny.myapplication.Activity_Two}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2327)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392)
at android.app.ActivityThread.access$800(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5305)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at com.example.arseny.myapplication.Activity_Two.onCreate(Activity_Two.java:24)
at android.app.Activity.performCreate(Activity.java:5990)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2280)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392)
at android.app.ActivityThread.access$800(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5305)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
一般来说,在第一个活动中只有一个按钮,通过单击它会抛出到第二个活动。在第二个活动中,只有一个文本字段,我在其中输出一个 txt 文件。从错误的文本中,我猜错误在这里的某个地方
String licence = getStringFromRawResource(getInputSteam(R.raw.licence));
TextView result = (TextView)findViewById(R.id.textView);
result.setText(licence);
但这里有什么问题以及如何解决它......
顺便说一句,我注意到一种模式,当您在项目中运行相同的代码而没有第二次活动时,一切正常!
请帮我解决这个问题!
主要活动
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.arseny.myapplication.MainActivity">
<Button
android:id="@+id/button"
android:layout_width="395dp"
android:layout_height="587dp"
android:layout_marginBottom="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp"
android:onClick="button"
android:text="Button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
活动二
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.arseny.myapplication.Activity_Two">
<TextView
android:id="@+id/textView"
android:layout_width="330dp"
android:layout_height="412dp"
android:text="TextView"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="8dp"
tools:layout_editor_absoluteY="91dp"
tools:layout_editor_absoluteX="57dp"
app:layout_constraintHorizontal_bias="0.25" />
</android.support.constraint.ConstraintLayout>
实际上,错误几乎就在您自己发现的地方:
这是唯一的解决方法: