- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个包含 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/
我想将类名作为打印方法中的参数传递。例如:public void printAll(String className)我还创建了一份动物 list 。我只想打印属于名称为 className 的类的节
我是 Rails 的初学者,在改进我的搜索查询时遇到了一些问题: 在我调用的 Controller 中: def index if params[:search] @persons = Pers
我正在检查代码并遇到以下行。 Charset.forName("ASCII") 但是当我查看 java documentation它只有 US-ASCII ISO-8859-1 UTF-8
想知道为什么 Class.forName("com.mysql.jdbc.Driver"); 和 Class.forName("com.mysql.jdbc.Driver").newInstance(
想知道为什么 Class.forName("com.mysql.jdbc.Driver"); 和 Class.forName("com.mysql.jdbc.Driver").newInstance(
这行代码 Class cls = (Class) Class.forName("java.lang.String"); 给出编译器警告 Type safety: Unchecked cast fr
之间有什么区别: List cats = session.createCriteria(Cat.class) .add( Restrictions.like("name", "F%") .list(
是否存在与Class.forName等效的gradle或实现它的更具gradle / groovy的方式。 我想在gradle中实现的目标如下: for(String name : new S
如何让用户插入字符串并检查具有相同“名称”的类? 假设我有一个标记为 public A[] getB(String bString) 的方法和两个类,A 和 B,其中 B扩展A。 在此方法中,我想搜索
我有一个在其中调用 Class.forName() 的方法。当我创建单元测试时,它会抛出 ClassNotFoundException。有没有办法模拟 Class.forName() 行为? 需要测试
我收到以下编译错误: Tester.java:10: unreported exception java.lang.ClassNotFoundException; must be caught or
我原以为以下两个赋值都是有效的,但第二个赋值引发了类未找到异常。有任何想法吗? missionIntent = new Intent(this, Mission00.class); /*DEBUG*/
我正在尝试使用 java 反射加载一堆类。一切似乎都工作正常(如果找不到类,我正在处理异常)。 但是,有一个特定的类引发了另一个异常,该异常不是通过调用 Class.forname() 而是通过内部方
我使用 Class.forname() 使用以下代码动态创建实例: String className = "models." + category; Class c = Class.forName(c
我有一个名为 Customer.java 的 Java 文件,位于文件夹 d:/sample 目录 中。但是当我使用 Class.forName("d:/sample/Customer") 时,它会抛
假设我有一个类Point。当我这样做时: Class myClass = Class.forName("Point"); 它有效。但当我这样做时: Class myNewClass = Class.f
好吧,考虑以下示例: inside of the src/ folder, i have the following packages : org/ com/ Foo 类位于 org.somepack
我 想要 必须编写一些动态加载类的工具。所以我必须为此调用 Class.forName 函数。可以有很多类 - 大约 10000 个。是否可以在加载所有类但不再需要它们后释放内存? 最佳答案 这个问题
我正在尝试使用 Class.forName 从 android.os.Build 类获取字符串,但我收到错误 NoSuchFieldException。 这是我的代码: public String g
这个问题在这里已经有了答案: How does Class.forName() work? (4 个答案) 关闭 9 年前。 在进行简单的 JDBC 连接时,所有资源都给出相同的代码 String
我是一名优秀的程序员,十分优秀!