我正在尝试将播放器的名称保存为共享的首选项,并通过再次以共享的首选项获取它的名称来使其显示在另一个活动中,但是我的应用程序崩溃了。
致命异常:主要
Process: plp.cs4b.thesis.drawitapp, PID: 1970
java.lang.RuntimeException: Unable to start activity ComponentInfo{plp.cs4b.thesis.drawitapp/plp.cs4b.thesis.drawitapp.PlayGame}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String plp.cs4b.thesis.drawitapp.Player.getName()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
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:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String plp.cs4b.thesis.drawitapp.Player.getName()' on a null object reference
at plp.cs4b.thesis.drawitapp.PlayGame.onCreate(PlayGame.java:20)
at android.app.Activity.performCreate(Activity.java:5933)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
... 10 more
代码:
播放器
public class Player {
private Context context;
private SharedPreferences prefSettingsU;
private SharedPreferences.Editor prefEditorU;
private static final int PREFERENCE_MODE_PRIVATE = 0;
private static final String MY_UNIQUE_PREF_FILE = "DrawItApp";
public Player(Context context, String name) {
this.context = context;
saveName(name);
}
public void saveName(String n) {
prefSettingsU = context.getSharedPreferences(MY_UNIQUE_PREF_FILE, PREFERENCE_MODE_PRIVATE);
prefEditorU = prefSettingsU.edit();
prefEditorU.putString("keyName", n);
prefEditorU.commit();
}
public String getName(Context ctx) {
prefSettingsU = ctx.getSharedPreferences(MY_UNIQUE_PREF_FILE, PREFERENCE_MODE_PRIVATE);
String name = prefSettingsU.getString("keyName", "ANONYMOUS");
return name;
}
PlayGame.java
public class PlayGame extends Activity {
private TextView welcomePlayer;
private ListView createdGames;
private Player mPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.play_game);
welcomePlayer = (TextView) findViewById (R.id.tvPlayerName);
welcomePlayer.setText("Welcome Back, " + String.valueOf(mPlayer.getName(this)) + " !");
createdGames = (ListView) findViewById (R.id.listCreatedGames);
// adapter etc
createdGames.setEmptyView(findViewById (R.id.tvNoGames));
}
PlayerName.java
public class PlayerName extends Activity {
private EditText playerName;
private Player mPlayer;
public static Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.player_name);
context = this;
playerName = (EditText) findViewById (R.id.etName);
}
public void onC_Confirm(View btnclick) {
mPlayer = new Player(context, String.valueOf(playerName.getText()));
//mPlayer.saveName();
Intent intent = new Intent(PlayerName.this, PlayGame.class);
startActivity(intent);
}
public void onC_testShPref(View btnclick) {
Intent intent = new Intent(PlayerName.this, PlayGame.class);
startActivity(intent);
}
您的应用在以下位置崩溃:
welcomePlayer.setText("Welcome Back, " + String.valueOf(mPlayer.getName(this)) + " !");
因为mPlayer=null
。
您忘记Player mPlayer
在PlayGame活动中进行初始化。
mPlayer = new Player(context,"");
问题内容: 有人可以帮我检查我的代码有什么问题吗?我有4个,并且它们的值已插入到中。现在我想将该项目检索到另一个旋转器中,但得到 我已经检查了每个步骤,但仍然无法找出问题所在。 更新.java 错误的LogCat 我有一个活动,其中有一个微调器,下面的代码对我来说很好用。 问题答案: *方法之一的参数是。正如您在摘录中看到的: …的check ,如果T不是a 或null ,则返回false 。由于
问题内容: 运行我的项目时出现错误。 这是完整的日志: 这是我的ProductDetail.java 谁能告诉我错误在哪里以及如何解决?如果有人可以帮助我,我将非常感激。 问题答案: 您的字符串是这样给你一个。这是导致它的原因: 字符串是因为您没有从接收任何值。这可能是因为您忘记了传递以前的值。 但是,您可以检查一下String 是否存在,那么将不会执行这些操作。您可以通过以下方式做到这一点: 因
问题内容: 我正在尝试在RecyclerView中实施滑动删除操作。除了在要刷卡的项目下方绘制一个删除图标外,其他一切似乎都工作正常。 这就是我的做法: 它在扔 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法’boolean android.graphics.Bitmap.isRecycled()’ 全栈跟踪 第149行已调试,但我看到它为null,但
问题内容: 我的Android项目中总是出现错误。 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“ android.view.View android.app.Activity.findViewById(int)” 在我的MainActivity中,我正在调用FragmentStart类。 FragmentStart.class 问题答案: 除了@S
问题内容: 我有一个称为 MainActivity.java 的类,该类称为一个类。最后一个类在执行时返回此错误: 我不明白在完成工作后如何编辑排名。 MainActivity.java 连接.java 问题答案: 错误是 永远不会初始化,因此指向null。为了使您的代码正常工作,最小的步骤是在MainActivity中 在连接 但是无论如何,在onCreate中创建任务并传递Activity并不
问题内容: 我收到以下错误 尝试在空对象引用上调用虚拟方法’void android.widget.StackView.setAdapter(android.widget.Adapter)’ 在这条线上 完整的片段 EventsFragment.java 是 Stack_Adapter.java Stack_Items 问题答案: 您正在执行: 你是。返回。 你为什么用? 在哪里?您应该从正确的x