1

我保存了用户密码和用户名的两部分数据以供以后使用的数据和字母的随机组合,然后检查应用程序何时再次执行以避免再次登录屏幕。

我昨天有这个工作,出于某种原因,我希望我在添加功能时放错了代码,现在无法让它再次工作,我已经尝试了一整天来修复它,但我不能。

EDIT1:出于某种原因,它转到“CheckPrefs”方法的 else 语句,我无法理解。

EDIT2:它可以很好地保存首选项并达到目的,但是它就是无法读取它。

代码:

public static final String PREFS_NAME = "MyPregs";
    public static final String PREFS_CHECK = "CheckSignedIn";
    public static final String UID ="";
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        CheckPrefs();

        // Login button clicked
        ok = (Button) findViewById(R.id.btn_login);
        ok.setOnClickListener(this);

        result = (TextView) findViewById(R.id.lbl_result);

    } 
    private void CheckPrefs() {
        // TODO Auto-generated method stub
        //checks to see if the user has signed in before if they have it gets there data from SharedPreferences and checks against our database via HttpPost.
        SharedPreferences settings = getSharedPreferences(PREFS_CHECK, 0);
        String SCheck1 = settings.getString("key4", null);
        if (SCheck1 != null  && equals(UID)) {
            Intent c = new Intent(this, CheckUserInfo.class);
            startActivity(c);   

        } else {

        }



    }
    //create bracket.

    public void postLoginData() {

        // Create a new HttpClient and Post Header
        HttpClient httpclient = new DefaultHttpClient();

        /* login.php returns true if username and password is equal to saranga */
        HttpPost httppost = new HttpPost("http://gta5news.com/login.php");

        try {
            // Add user name and password
            uname = (EditText) findViewById(R.id.txt_username);
            String username = uname.getText().toString();

            pword = (EditText) findViewById(R.id.txt_password);
            String password = pword.getText().toString();

            SharedPreferences signedin = getSharedPreferences(PREFS_CHECK, 0);
            SharedPreferences.Editor editor1 = signedin.edit();
            editor1.putString("key4", UID);
            editor1.commit();


            SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
            SharedPreferences.Editor editor = settings.edit();
            editor.putString("key1", username);
            editor.putString("key2", password);
            editor.commit();

            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
            nameValuePairs.add(new BasicNameValuePair("username", username));
            nameValuePairs.add(new BasicNameValuePair("password", password));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

            // Execute HTTP Post Request
            Log.w("HttpPost", "Execute HTTP Post Request");
            HttpResponse response = httpclient.execute(httppost);

            String str = inputStreamToString(response.getEntity().getContent())
                    .toString();
            Log.w("HttpPost", str);

            if (str.toString().equalsIgnoreCase("true")) {
                Log.w("HttpPost", "TRUE");
                result.setText("Login successful");
                try {Thread.sleep(250);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                Intent login = new Intent(LogIn.this, ChatService.class);
                startActivity(login);

            } else {
                Log.w("HttpPost", "FALSE");
                result.setText(str);
            }

        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private StringBuilder inputStreamToString(InputStream is) {
        String line = "";
        StringBuilder total = new StringBuilder();
        // Wrap a BufferedReader around the InputStream
        BufferedReader rd = new BufferedReader(new InputStreamReader(is));
        // Read response until the end
        try {
            while ((line = rd.readLine()) != null) {
                total.append(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        // Return full string
        return total;
    }

    public void onClick(View view) {
        if (view == ok) {

            postLoginData();
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(pword.getWindowToken(), 0);
        }
        // Click end
    }
    // if statement
}

// class ends here
4

3 回答 3

0

需要查看您将首选项保存在哪里,以便我们将其与您如何称呼您的首选项相匹配……但是,这是一个错字吗?

public static final String PREFS_NAME = "MyPregs"; 

Should it be "MyPrefs" instead of "MyPregs"?

于 2012-04-24T18:55:07.873 回答
0

你有

if (SCheck1 != null  && equals(UID))

但你是不是想说

if (SCheck1 != null  && !SCheck.equals(UID))

?

于 2012-04-24T18:55:12.507 回答
0

您也可以使用“反向比较”模式:

if (UID.equals(SCheck1)) {

} else {

}

这样,您就不必费心检查 SCheck1 == null。UID.equals(null) 将返回 false 而不是 null.equals(UID) 抛出 NullPointerException。

于 2012-04-24T18:57:06.020 回答