我正在尝试从快餐栏开始一项活动,并将String作为活动名称。
小吃店代码是:
private void showSnackbar(View view, String massgae, String action, final String intent) {
Snackbar.make(view, massgae, Snackbar.LENGTH_LONG)
.setAction(action, new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent myIntent = null;
try {
myIntent = new Intent(context, Class.forName(intent));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
startActivity(myIntent);
}
})
.setActionTextColor(Color.WHITE)
.setDuration(5000)
.show();
}
我正在用它来称呼它:
showSnackbar(llMain, getResources().getString(R.string.sbUserNotFound), getResources().getString(R.string.sbRegister), "Register.class");
当它加载时我得到:
java.lang.NullPointerException:尝试调用虚方法' java.lang.String android.content.Intent.toString()'在null对象引用上。
任何帮助?
答案 0 :(得分:0)
首先,这是一个坏主意。很抱歉地说。不应该像这样使用Class.forName()。
如果要自定义哪个活动开始,请发送一个变量,如Class,并使其成为通用。
但是如果你真的坚持这个实现,那么它失败的原因是因为你必须将完整的包名传递给Class.forName(),而不是添加" .class"在它的最后。
类似于:
Class.forName("com.testapp.ui.Register");
当然,您需要更改软件包名称以适合您自己的应用程序。