根据共享首选项值打开新活动

时间:2015-05-25 21:20:11

标签: android android-intent sharedpreferences

我要做的是检查用户是否已登录到Android应用程序,然后从历史记录中删除该应用程序并重新打开它以使其转移到User_Menu活动,而不是MainActivity活动1}}。我使用了共享偏好但它没有用。

MainActivity中,我进行了功能检查以检查用户是否已登录:

public class MainActivity extends ActionBarActivity {
    Button login;
    Button reg;
    Button guest;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        check();
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        android.app.ActionBar bar = getActionBar();
        bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#03A9F4")));

        login=(Button)findViewById(R.id.button1);
        reg=(Button)findViewById(R.id.Button01);
        guest=(Button)findViewById(R.id.Button02);
    }

    public void check()
    {
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
        String name = preferences.getString("Name", "");
        if(!name.equalsIgnoreCase(""))
        {
            Intent intent=new Intent(getApplicationContext(),User_Menu.class);
            startActivity(intent); /* Edit the value here*/
        }
    }
}

在用户登录时访问的User_Menu活动中,我放了:

public class User_Menu extends ActionBarActivity {
    AskConnection db;

    Button lbsButton;
    Button guideButton;
    Button duaButton;
    Button mediaButton;
    Button askButton;
    Button azkarButton;
    Button logoutButton;
    static String nameU=null;
    private static final int RESULT_SETTINGS = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu);

        //nameU=new String();
        /*  setLanguage();
        showUserSettings();*/
        android.app.ActionBar bar = getActionBar();
        bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#03A9F4")));
        try {
            JSONObject json_data=null;
            for(int i=0;i<LoginConnection.jArray.length();i++){
                json_data = LoginConnection.jArray.getJSONObject(i);
                nameU=json_data.getString("name");

                //list.add(answer);
                //  print(nameU);
            }

            display();
        } catch(JSONException e1){
            print("No Data Found");
        } catch (ParseException e1) {
            e1.printStackTrace();
        }
    }
}

当我尝试此操作时,它首先正常工作,但在我登录并重新打开应用程序后出现异常,直到我无法打开User_Menu活动

1 个答案:

答案 0 :(得分:0)

在检查SharedPreferences中是否有名称的方法中,如果首选项中没有用户,则启动菜单活动,但这真的是您想要做的吗?我希望,如果name.equalsIgnoreCase(“”)为true,你会想要启动菜单活动。

此外,你应该考虑添加

  • FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK

意图在更改为菜单活动之前清除活动堆栈中的所有活动。