如何在Android中的活动之间维护捆绑附加功能

时间:2015-03-30 09:52:56

标签: java android

我想将数据从登录页面传递到主活动,其中包含我的菜单,工作正常。但问题是假设用户点击特定菜单并打开另一个活动让我们说活动A.当用户按下返回按钮切换到主活动时,捆绑包会给出空指针异常。这是我的登录意图

    Bundle m=new Bundle();

    m.putString("userid",userid);

    Intent intent=new Intent(login.this,main.class);

    intent.putExtras(m);
    startActivity(intent);
    ///////////////
    main
        String userid;
            @Override
            protected void onCreate(Bundle savedInstanceState) 
           {
                super.onCreate(savedInstanceState);

                    setContentView(R.layout.activity_main);
                    Bundle b=getIntent().getExtras();
            }

上面的代码工作正常但是当主要活动创建另一个活动A时出现问题A.当活动A想要返回到父活动(主要)时,活动会给出空指针异常。

Intent inte=new Intent(A.this,main.class);
startActivity(inte);

4 个答案:

答案 0 :(得分:0)

您在返回主活动时尝试访问捆绑包,但您没有在意图中创建捆绑包。检查如下,

if(getIntent().getExtras() != null)
{
  Bundle b=getIntent().getExtras();
}

答案 1 :(得分:0)

如果您想要活动A中的捆绑包,那么将捆绑包发送到活动A,当您从活动A返回时,再次使用捆绑包到主活动调用意图。

答案 2 :(得分:0)

使用此:

Intent i = new Intent(this, main.class);
i.putExtra("Key1", "ABC");
i.putExtra("Key2", "123");

// Starts main.class
startActivity(i);

现在在main.class

Bundle extras = getIntent().getExtras();
if(extras!=null){
     String a = extras.getString("Key1");
     String b = extras.getString("Key2");
}

希望这会有效..

答案 3 :(得分:0)

为什么不将用户ID存储在SharedPreferences

设置器:

SharedPreferences pref = getApplicationContext().getSharedPreferences("UserAccount", 0);
Editor editor = pref.edit();
editor.putString("userid", userid); 
editor.commit();

吸气剂:

pref.getString("userid", "default_value");

清除:

editor.remove("userid");
editor.commit();