多个类中的SharedPreferences

时间:2017-02-23 17:40:06

标签: java android android-sharedpreferences

我对java编码不是很熟悉,但我想创建自己的应用程序。

我想使用SharedPreferences在不同的活动/类中存储一些值,如多个教程中所示(以及此站点上的问题)但是当我尝试在另一个类中的另一个活动中读取它们时我得到像2131361821这样的随机数字。

用户必须填写ID为textview的{​​{1}}字段,以便通过GetWind类获得1000英尺的风向。

如果我在direction_1000中将此值存储为int,则一切正常但如果我想将此值传递给类SharedPreference并通过{{1}显示在那里}} InputNavDataint PHI我得到了这个奇怪的价值。

有人可以帮我解决这个问题吗?对于凌乱的代码和问题提前抱歉,但正如我所说,这对我来说都很新鲜。

MainActivity

String

GetWind

phi

InputNavData

package com.example.navigationcalculator;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "com.example.navigationcalculator.MESSAGE";

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

/** Called when the user clicks the Agree button */
public void wind_input(View view) {
    Intent intent = new Intent(this, GetWind.class);
    startActivity(intent);
}

/** Called when the user clicks the Input Navigation Data button */
public void input_nav_data(View view) {
    Intent intent = new Intent(this, InputNavData.class);
    startActivity(intent);
}

/** Called when the user clicks the Calculate Data button */
public void calculate_data(View view) {
    Intent intent = new Intent(this, CalculateData.class);
    startActivity(intent);
}

}

1 个答案:

答案 0 :(得分:0)

查看您的input_nav_datacalculate_data方法。

这是因为流程应该是:

  1. 获取共享偏好
  2. 将值存储在共享首选项中。
  3. 提交
  4. 开始活动
  5. 你在做什么

    1. 获取共享偏好
    2. 开始活动
    3. 将值存储在共享首选项中。
    4. 提交
    5. calculate_data

      public void calculate_data(View view) {
       Intent intent = new Intent(this, CalculateData.class);
       sharedpreferences = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); // Read the actual altitude 
       EditText alt = (EditText) findViewById(R.id.altitude);
       int altitude = Integer.parseInt(alt.getText().toString());
       SharedPreferences.Editor editor = sharedpreferences.edit();
       editor.putInt(altitude_static_string, altitude);
       editor.commit();
       int shared_altitude = sharedpreferences.getInt(PREFS_NAME, altitude);
       String SALT = String.valueOf(shared_altitude);
       Log.d("altitude", SALT);
       int PHI = sharedpreferences.getInt(PREFS_NAME, direction_1000);
       String phi = String.valueOf(PHI);
       Log.d("dir 1000 in inputnavdata", phi);
      }
      
      startActivity(intent);