gpt4 book ai didi

java - Class.forName() 一直显示错误 : java. lang.NullPointerException

转载 作者:行者123 更新时间:2023-11-29 04:58:10 27 4
gpt4 key购买 nike

我想创建一个包含 Activity.class 的变量,这样我就可以动态更改要按 Intent 调用的 Activity。我希望 startBtn 开始播放 Activity 的最后一个级别的 Intent ,我将在设备内部以 json 格式存储它。但是,当我尝试使用 forName() 函数调用 Activity 类时,我一直显示错误。

主 Activity.class

 public class MainActivity extends Activity {

Button startBtn, chooseLevelBtn;
Class classVariable;

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

startBtn = (Button) findViewById(R.id.startBtn);
chooseLevelBtn = (Button) findViewById(R.id.chooseLevelBtn);

try {
/*
* Set class Variable so that I can dynamically change the Activity
* to be called with intent.
* Testing the variable with Level001Activity, but app keep crashing
* when startBtn is pressed with stack error I post below
*/
classVariable = Class.forName("com.ed.pieces.Level001Activity");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}

startBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(),
classVariable);
startActivity(i);
}
});
}
}

错误堆栈

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Class.getName()' on a null object reference at android.content.ComponentName.(ComponentName.java:129) at android.content.Intent.(Intent.java:4449) at com.example.ed.pieces.MainActivity$1.onClick(MainActivity.java:35) at android.view.View.performClick(View.java:5198) at android.view.View$PerformClick.run(View.java:21147) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) 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)

P.S 我会把最后一关播放的信息以json格式存储为字符串,比如“com.ed.pieces.Level001Activity”,当用户启动应用时,类classVariable应该包含该类的Activity类最后玩的水平。

我们非常欢迎所有建议。提前谢谢你。

最佳答案

您的异常来自您的 onClick() 方法及其创建 Intent 的尝试,而不是来自您的 forName() 调用。那是因为您的 forName() 调用由于某种原因失败了。

此外,您不需要forName()。替换:

try {
/*
* Set class Variable so that I can dynamically change the Activity
* to be called with intent.
* Testing the variable with Level001Activity, but app keep crashing
* when startBtn is pressed with stack error I post below
*/
classVariable = Class.forName("com.ed.pieces.Level001Activity");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}

与:

classVariable = Level001Activity.class;

并添加适当的 import 以引入 Level001Activity

关于java - Class.forName() 一直显示错误 : java. lang.NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32975166/

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