我有nullpointer异常。
MainActivity中的功能。
public void intentLoginUser(){
Intent aux = new Intent(MainActivity.this, LoginUserSplashScreen.class);
aux.putExtra("user", username);
aux.putStringArrayListExtra("notificationList", MainActivity.this.notificationsList);
aux.putStringArrayListExtra("friendList", MainActivity.this.friendList);
aux.putStringArrayListExtra("localizationList", MainActivity.this.localizationList);
MainActivity.this.startActivity(aux);
}
另一个Activity中的函数,名为LoginUserSplashScreen
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE); // Removes title bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // Removes notification bar
notificationList = getIntent().getStringArrayListExtra("notificationList");
friendList = getIntent().getStringArrayListExtra("friendList");
localizationList = getIntent().getStringArrayListExtra("localizationList");
myUsername = getIntent().getStringArrayListExtra("user");
Log.e("Erro Aqui YA?", myUsername.get(0));
setContentView(R.layout.activity_loginuser);}
怎么了?
我在onCreate
中的函数Log.e();
中有nullpointer ...我正在尝试调试,但我不能。
编辑 - 行onCreate
中函数Log.e()
中的Nullpointer
因为所有列表都为空(无法从上一个活动获得任何内容)。
答案 0 :(得分:1)
尝试
getIntent().getStringExtra("user");
而不是
getIntent().getStringArrayListExtra("user");
“user”不是ArrayList。
答案 1 :(得分:1)
您的看跌期权和看涨期权不匹配。
aux.putExtra("user", username);
myUsername = getIntent().getStringArrayListExtra("user");
将aux.putStringArrayListExtra("user", username)
与getIntent().getStringArrayListExtra("user")
一起使用(假设用户名是ArrayList< String>)并使用aux.putExtra("user", username)
和getIntent().getStringExtra("user")
(假设用户名是字符串)。
答案 2 :(得分:0)
我认为问题是当你分配myUsername时,你说的是带有“user”键的变量是一个StringArrayList,而是当你把它放在intent中时它是一个String。 putExtra()方法采用String类型,而不是StringArrayLists。
答案 3 :(得分:0)
在主要活动中,您已使用putExtra
指定了对象aux.putExtra("user", username);
但在接收点你的getStringArrayListExtra
myUsername = getIntent().getStringArrayListExtra("user");
Log.e("Erro Aqui YA?", myUsername.get(0));
答案 4 :(得分:0)
这是错误代码
aux.putExtra("user", username);
myUsername = getIntent().getStringArrayListExtra("user");
你可以使用bundle,这段代码适合你
getIntent().getStringExtra("user");
或
Bundle bundle = new Bundle();
bundle.putString("user", username);
aux.putExtras(bundle);
getIntent().getExtras().getString("user");
答案 5 :(得分:0)
我的解决方案,
在MainActivity中:
public ArrayList<String> usernameList = new ArrayList<String>();
public Queue<String> serverMessages = new LinkedList<String>();
public ArrayList<String> notificationsList = new ArrayList<String>();
public ArrayList<String> friendList = new ArrayList<String>();
public ArrayList<String> localizationList = new ArrayList<String>();
public void intentLoginUser(){
Intent aux = new Intent(MainActivity.this, LoginUserSplashScreen.class);
usernameList.add(username);
aux.putStringArrayListExtra("user", MainActivity.this.usernameList);
aux.putStringArrayListExtra("notificationList", MainActivity.this.notificationsList);
aux.putStringArrayListExtra("friendList", MainActivity.this.friendList);
aux.putStringArrayListExtra("localizationList", MainActivity.this.localizationList);
MainActivity.this.startActivity(aux);
}
在LoginUserSplashScreen中
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE); // Removes title bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // Removes notification bar
notificationList = getIntent().getStringArrayListExtra("notificationList");
friendList = getIntent().getStringArrayListExtra("friendList");
localizationList = getIntent().getStringArrayListExtra("localizationList");
myUsername = getIntent().getStringArrayListExtra("user");
Log.e("Erro Aqui YA?", myUsername.get(0));
setContentView(R.layout.activity_loginuser);
// Start timer and launch main activity
IntentLauncher launcher = new IntentLauncher();
launcher.start();
}
和Log.e();工作并传递所有数据。