意图 - 放置并获取额外内容 - Android - NullPointer

时间:2014-01-03 02:09:35

标签: android android-intent nullpointerexception

我有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 因为所有列表都为空(无法从上一个活动获得任何内容)。

6 个答案:

答案 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();工作并传递所有数据。