【问题标题】:Android json get sharedpreferencesAndroid json 获取共享首选项
【发布时间】:2014-09-22 14:48:01
【问题描述】:

我试图让一个 json 值显示在另一个类上,但它返回一个空值,我试图使用 sharedpreferences 保存它,但它不工作。我想得到 editor.putString("username", username);在下一个类(菜单)上显示用户名。它正在显示

public class MainActivity extends Activity {
    Button login,signin,reg,forr;
    private EditText user,pass;
    private ProgressDialog pDialog;
    int flag=0;

    JSONParser jsonParser = new JSONParser();

    private static String LOGIN_URL = "http://10.0.2.2/wordtinss/login.php";

    private static final String TAG_SUCCESS = "success"; 
    private static final String TAG_MESSAGE = "message";
    private static final String DAIRY = "dairy";
    public static final String PREFS_NAME = "LoginPrefs";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
            .detectDiskReads().detectDiskWrites().detectNetwork()
            .penaltyLog().build());
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

            login=(Button)findViewById(R.id.login); 
            user=(EditText)findViewById(R.id.username);
            pass=(EditText)findViewById(R.id.password);
            reg=(Button) findViewById(R.id.reg);
            forr=(Button) findViewById(R.id.forg);

        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
            if (settings.getString("logged", "").toString().equals("logged")) {
                Intent intent = new Intent(MainActivity.this, Menu.class);
                startActivity(intent);
            }

        reg.setOnClickListener(new View.OnClickListener() {         
            @Override
            public void onClick(View view) {
                Intent i = new Intent(MainActivity.this, Register.class);
                finish();
                startActivity(i);
            }
        //Close code that check online details      
        }); 
        //Close log in 

        forr.setOnClickListener(new View.OnClickListener() {            
            @Override
            public void onClick(View view) {
                Intent i = new Intent(MainActivity.this, Forget.class);
                finish();
                startActivity(i);
            }
            //Close code that check online details      
         }); 

         login.setOnClickListener(new View.OnClickListener() {          
            @Override
            public void onClick(View view) {

                //Check all fields      
                if(user.length()<1 || pass.length()<1)
                {
                        Toast.makeText(MainActivity.this,"Please Enter both username and password", Toast.LENGTH_LONG).show();
                        return;
                }

                //check connectivity        
                if(!isOnline(MainActivity.this))
                {                   
                        Toast.makeText(MainActivity.this,"No network connection", Toast.LENGTH_LONG).show();
                        return; 
                }

                //from login.java       
                    new loginAccess().execute();
            }

            //code to check online details
            private boolean isOnline(Context mContext) {
                ConnectivityManager cm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
                NetworkInfo netInfo = cm.getActiveNetworkInfo();
                if (netInfo != null && netInfo.isConnectedOrConnecting())
                {
                    return true;
                }
                return false;
            }
            //Close code that check online details      
        }); 
        //Close log in 
    }


class loginAccess extends AsyncTask<String, String, String> {

    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(MainActivity.this);
        pDialog.setMessage("Login...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();
    }
    @Override
    protected String doInBackground(String... arg0) {
                    // Check for success tag
                    int success;
                    String username = user.getText().toString();
                    String password = pass.getText().toString();

                    try {
                        // Building Parameters


                        List<NameValuePair> params = new ArrayList<NameValuePair>();
                        params.add(new BasicNameValuePair("username", username));
                        params.add(new BasicNameValuePair("password", password));

                        Log.d("request!", "starting");
                        // getting product details by making HTTP request
                        JSONObject json = jsonParser.makeHttpRequest(LOGIN_URL, "POST",
                                params);

                        // check your log for json response
                        Log.d("Login attempt", json.toString());

                        // json success tag
                        success = json.getInt(TAG_SUCCESS);
                        if (success == 1) {

                            Log.d("Login Successful!", json.toString());

                            // Clear all previous data in database

                            String dar=json.getString(DAIRY);

                            SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
                            SharedPreferences.Editor editor = settings.edit();
                            editor.putString("logged", "logged");

                            editor.putString("username", username);
                            editor.putString("dairy", dar);


                            editor.commit();

                            Intent i = new Intent(getApplicationContext(),Menu.class);

                            finish();
                            startActivity(i);   
                            // Close all views before launching Dashboard
                                   return json.getString(TAG_MESSAGE);
                        } else {
                            Log.d("Login Failure!", json.getString(TAG_MESSAGE));
                            return json.getString(TAG_MESSAGE);
                        }
                    } catch (JSONException e) {

                    }

                    return null;

                }
    protected void onPostExecute(String file_url) {
        pDialog.dismiss();
        if(flag==1)
            Toast.makeText(MainActivity.this,"Please Enter Correct informations", Toast.LENGTH_LONG).show();

    }

  }



}
public class Menu extends Activity {
    private List<list> myCars = new ArrayList<list>();
    int flag=0;

    String namee ,dar;
    JSONParser jsonParser = new JSONParser();
    private ProgressDialog pDialog;
    private static final String TAG_SUCCESS = "success"; 
    private static String LOGIN_URL = "http://10.0.2.2/wordtinss/login.php";
    private static final String dairy= "dairy";
    private static final String TAG_MESSAGE = "message";
    public static final String PREFS_NAME = "LoginPrefs";
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.menu);

        populateCarlist();
        populateListView();
        registerclick();

        SharedPreferences un = PreferenceManager.getDefaultSharedPreferences(Menu.this);
         namee = un.getString("username", "anon");

        TextView usern= (TextView) findViewById(R.id.usern);


        usern.setText(namee);
    }
}

【问题讨论】:

    标签: android json sharedpreferences


    【解决方案1】:

    用途:

    namee = getSharedPreferences(PREFS_NAME , Context.MODE_PRIVATE).getString("username", "anon");
    

    相反。因为我认为您使用的是不同的首选项文件。

    【讨论】:

    • 如果它仍然为空,这意味着您要么在将其保存在首选项中之前尝试访问它,要么根本没有保存它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    • 2012-09-20
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多