1

プロジェクトのログインページがあります。ここでの要件は、一度ログインすると、ログインページは常にログインしたいということです。Googleを通じていくつかのアイデアがあります。つまり、共有設定を使用することをお勧めします。コンセプト、今私はこのコンセプトに従っていて、いくつかのコードを試しました。

私のプロジェクトでは、問題は適切なユーザー名とパスワードを指定した後、別の画面に切り替わらないことです。同時に、log-catにも何も表示されません。この概念を実現するにはどうすればよいですか?

提案をお願いします。

参考のために私の情報源を見つけてください

クラスSaveSharedPreferece

public class SaveSharedPreference 
{
static final String PREF_USER_NAME= "username";

static SharedPreferences getSharedPreferences(Context ctx) {
    return PreferenceManager.getDefaultSharedPreferences(ctx);
}

public static void setUserName(Context ctx, boolean userName) 
{
    Editor editor = getSharedPreferences(ctx).edit();
    editor.putBoolean(PREF_USER_NAME, userName);
    editor.commit();
}

public static String getUserName(Context ctx)
{
    return getSharedPreferences(ctx).getString(PREF_USER_NAME, "");
}}

MainActivity.java

public class MainActivity extends Activity 
{
Button btn;
EditText edt1,edt2;

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
 }

 public void loginpage()
 {  
    edt1 = (EditText)findViewById(R.id.editText_username);
    edt2 = (EditText)findViewById(R.id.editText_password);

    btn = (Button)findViewById(R.id.button_login);
    btn.setOnClickListener(new View.OnClickListener()
    {

@Override
public void onClick(View v) 
{
    if(edt1.getText().toString().length()!=0 && edt1.getText().toString().length()!=0)
    {
        Intent intvar =  new Intent(v.getContext(), ResultActivity.class);
        startActivity(intvar);
    }
    else
    {
    Toast.makeText(getApplicationContext(), "oops! empty..", Toast.LENGTH_SHORT).show();
        }
    }
});

if(SaveSharedPreference.getUserName(MainActivity.this).length() == 0)
{
     // call Login Activity
     loginpage();
   }
 else
 {
    // Call Next Activity

 }

 if (getIntent().getBooleanExtra("EXIT", false)) 
 {
   finish();
        }
    }
}

ResultActivity.java

public class ResultActivity extends Activity 
{ 

Button btn_exit;

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main1);

    btn_exit = (Button)findViewById(R.id.button_exit);
    btn_exit.setOnClickListener(new View.OnClickListener()
    {

    @Override
    public void onClick(View v) 
    {
        Intent intent = new Intent(ResultActivity.this, MainActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intent.putExtra("EXIT", true);
        startActivity(intent);
        }
    });
}}

貴重な時間をありがとう!..

4

2 に答える 2

0

ブール値を SharedPreferences に保存し、文字列を取得しています。それがどのように可能か。

ブール値または文字列のいずれかを保存して取得することをお勧めします。

以下のように SaveSharedPreference クラスの setUserName() コードを変更すると、機能します

public static void setUserName(Context ctx, String userName) 
{
    Editor editor = getSharedPreferences(ctx).edit();
    editor.putString(PREF_USER_NAME, userName);
    editor.commit();
}
于 2012-10-06T07:38:08.253 に答える
0

まず、SharedPrefernce ファイルに別のフィールドをパスワードとして追加します。セッターメソッドやゲッターメソッドのように、ユーザー名に対して行ったことと同じことを行います(セッターメソッドでブール値ではなく文字列にします)。

次のように sharedPrefernce から値を取得するメソッドを 1 つ作成します。

private void validateUser(){
String username  = SaveSharedPreference.getUserName(MainActivity.this);
String password = SaveSharedPreference.getPassword(MainActivity.this);
 if (check_for_any_condition){
    Intent intvar =  new Intent(v.getContext(), ResultActivity.class);
    startActivity(intvar);
 }
}

oncreate メソッドでこのメソッドを呼び出します。

それがあなたを助けることを願っています。

于 2012-10-06T07:50:40.787 に答える