1

ログインページとサインアップページを作成したAndroidアプリを作成しています。ログインページに「ログインしたままにする」機能を実装したいと考えています。私は何をすべきかを知っていると思いますが、私が試みるほとんどすべてがエラーを出しています。

チェックボックスの状態を SharedPreference に保存し、それを if else ステートメントで使用する必要があります。チェックされている場合は、ログイン アクティビティをスキップしてメイン アクティビティを開始し、それ以外の場合はログイン アクティビティを開始します。

誰かがサンプルコードを提供できると助かります。

ChechBox keeplog = (CheckBox)findBiewById(R.Id.checkbox1)

チェック状態を Shared Preference に保存するにはどうすればよいですか? また、if-else ステートメントで使用できるようにその状態をブール値または文字列の形式で取得する方法を教えてください。

4

2 に答える 2

4

次の方法を試して、1 つのブール変数を宣言します。

CheckBox keeplog = (CheckBox) findViewById(R.id.checkBox1);
boolean isChecked = false;

次に、チェックボックスの状態を共有設定に保存しますCheckedChangeListener

keeplog.setOnCheckedChangeListener(new OnCheckedChangeListener() {

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        SharedPreferences settings = getSharedPreferences("PREFS_NAME", 0);
        SharedPreferences.Editor editor = settings.edit();
        editor.putBoolean("isChecked", isChecked);
        editor.commit();
    }
});    

次に、SharedPreferences次の方法を使用してチェックボックスの状態を取得します。

SharedPreferences settings1 = getSharedPreferences("PREFS_NAME", 0);
isChecked = settings1.getBoolean("isChecked", false);

if ステートメントで確認し、次のようにアクティビティを開始します

if (isChecked) {
    Intent i = new Intent(MainActivity.this, ThirdActivity.class);
    startActivity(i);
} else {
    Intent i = new Intent(MainActivity.this, SecondActivity.class);
    startActivity(i);
}

ありがとうございました。

于 2013-07-06T06:45:14.180 に答える
1

以下を試してみてください。ejabberd サーバーに接続してログインする方法に関するコードを貼り付けました。SharedPrefernces で値を保存および取得する方法を説明するためのコメントを追加しました。

public class Login extends Activity
{
private XMPPConnection connection;
private ProgressBar progressBar;
private EditText userId;
private EditText password;
private CheckBox rememberMe;
private SharedPreferences sharedPreferences;
private Editor editor;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    userId = (EditText) findViewById(R.id.user_id);
    password = (EditText) findViewById(R.id.password);
    rememberMe = (CheckBox) findViewById(R.id.remember_me);
    progressBar = (ProgressBar) findViewById(R.id.login_progress);
                //Retrieving SharedPreferences
    sharedPreferences = this.getPreferences(Context.MODE_PRIVATE);
                //Retrieving editor
    editor = sharedPreferences.edit();
                //Retrieving remember me checkbox's set value which if was stored in SharedPreferences
    if(sharedPreferences.getBoolean(getString(R.string.remember_me), false))
    {
        String uId, pass;
        uId = sharedPreferences.getString(getString(R.string.user_id), "");
        pass = sharedPreferences.getString(getString(R.string.password), "");
        userId.setText(uId);
        password.setText(pass);
        rememberMe.setChecked(sharedPreferences.getBoolean(getString(R.string.remember_me), false));
        new Connection().execute(uId, pass);
    }
}

public void login(View view)
{
    new Connection().execute(userId.getText().toString(), password.getText().toString());
}

private class Connection extends AsyncTask<String, Void, Integer>
{
    private static final int CONNECTION_FAILURE = 0;
    private static final int LOGIN_FAILURE = 1;
    private static final int SUCCESS = 2;

    protected void onPreExecute()
    {
        progressBar.setVisibility(ProgressBar.VISIBLE);
    }

    protected Integer doInBackground(String... strings)
    {
        ConnectionConfiguration conConfig = new ConnectionConfiguration("192.168.1.66", 5222, "domain");
        connection = new XMPPConnection(conConfig);
        try
        {
            connection.connect();
            Log.i("TESTING", "CONNECTED TO " + connection.getHost());
        }
        catch(Exception e)
        {
            Log.e("TESTING", e.getMessage());
            return CONNECTION_FAILURE;
        }
        try
        {
            connection.login(strings[0], strings[1]);
            Log.i("TESTING", "LOGGED IN AS " + connection.getUser());
            Presence presence = new Presence(Presence.Type.available);
            connection.sendPacket(presence);
        }
        catch(Exception e)
        {
            Log.e("TESTING", e.getMessage());
            return LOGIN_FAILURE;
        }
        return SUCCESS;
    }

    protected void onPostExecute(Integer integer)
    {
        progressBar.setVisibility(ProgressBar.GONE);
        switch(integer)
        {
            case CONNECTION_FAILURE:
                Toast.makeText(getApplicationContext(), "Failed to connect to the server.", Toast.LENGTH_LONG).show();
                break;
            case LOGIN_FAILURE:
                Toast.makeText(getApplicationContext(), "Please check your user id and or password.", Toast.LENGTH_LONG).show();
                break;
            case SUCCESS:
                if(rememberMe.isChecked())
                {
                                                        //Setting value in SharedPrefernces using editor.
                    editor.putBoolean(getString(R.string.remember_me), rememberMe.isChecked());
                    editor.putString(getString(R.string.user_id), userId.getText().toString());
                    editor.putString(getString(R.string.password), password.getText().toString());
                                                         //Committing the changes.
                    editor.commit();
                }
                else
                                                         //Clearing SharedPreferences.
                    sharedPreferences.edit().clear().commit();
                startActivity(new Intent(getApplicationContext(), Home.class));

        }
    }
}
}
于 2013-07-06T06:24:26.673 に答える