【问题标题】:How to read Sharedpreference value from another activity如何从另一个活动中读取 Sharedpreference 值
【发布时间】:2017-07-25 10:20:27
【问题描述】:

我首先做两个活动是 timer.java 活动,这是一个倒计时活动,第二个活动是 SaveRestTime.java 在这个活动中用户在edittext中输入数字值,用户将保存它我现在在这个活动中使用共享首选项我想要哪个如果用户不保存任何值,则保存在 SaveRestTime.java 类中的用户值会自动生成倒计时值,则默认值为 30 秒,请帮助我,我很困惑如何从另一个活动中读取值 这是 timer.java 代码

package com.cinegoes.www.daily10exercise;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.CountDownTimer;
import com.cinegoes.www.daily10exercise.SaveRestTime;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;

import java.util.concurrent.TimeUnit;

import static com.cinegoes.www.daily10exercise.SaveRestTime.mypreference;

/**
 * Created by ever on 7/25/2017.
 */

public class timer extends Activity implements View.OnClickListener {

private CountDownTimer countDownTimer;
private boolean timerStarted = false;
private Button buttonStart;
public TextView textView;
private ProgressBar progressBarCircle;
private final long startTime = 30 * 1000;
private final long interval = 1 * 1000;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.timer);
    buttonStart = (Button) this.findViewById(R.id.button);
    progressBarCircle = (ProgressBar) findViewById(R.id.progressBarCircle);
    buttonStart.setOnClickListener(this);
    textView = (TextView) this.findViewById(R.id.textView);
    countDownTimer = new CountDownTimerActivity(startTime, interval);
    textView.setText(textView.getText() + String.valueOf(startTime/1000));
}

@Override
protected void onStart() {
    super.onStart();
    countDownTimer.start();
    timerStarted = true;
    setProgressBarValues();
}


@Override
public void onClick(View v) {
    finish();
}


public class CountDownTimerActivity extends CountDownTimer {
    public CountDownTimerActivity(long startTime, long interval) {
        super(startTime, interval);
    }

    @Override
    public void onFinish() {
        textView.setText(msTimeFormatter(startTime));
        textView.setText("Time's up!");
        setProgressBarValues();
        finish();
    }


    @Override
    public void onTick(long millisUntilFinished) {
        textView.setText(msTimeFormatter(millisUntilFinished));

        progressBarCircle.setProgress((int) (millisUntilFinished / 1000));
    }
}

private void setProgressBarValues() {

    progressBarCircle.setMax((int) startTime / 1000);
    progressBarCircle.setProgress((int) startTime / 1000);
}
private String msTimeFormatter(long milliSeconds) {

    String ms = String.format("%02d:%02d",
            TimeUnit.MILLISECONDS.toMinutes(milliSeconds) - 
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(milliSeconds)),
            TimeUnit.MILLISECONDS.toSeconds(milliSeconds) - 
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(milliSeconds)));

    return ms;


}


}

这是我的 SaveRestTime.java 代码

package com.cinegoes.www.daily10exercise;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;

public class SaveRestTime extends Activity {
SharedPreferences sharedpreferences;
TextView name;
public static final String mypreference = "mypref";
public static final String Name = "nameKey";


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

    name = (TextView) findViewById(R.id.etName);
    sharedpreferences = getSharedPreferences(mypreference,
            Context.MODE_PRIVATE);
    if (sharedpreferences.contains(Name)) {
        name.setText(sharedpreferences.getString(Name, ""));
    }

}

public void Save(View view) {
    String n = name.getText().toString();
    SharedPreferences.Editor editor = sharedpreferences.edit();
    editor.putString(Name, n);
    editor.commit();
}



public void Get(View view) {
    name = (TextView) findViewById(R.id.etName);
    sharedpreferences = getSharedPreferences(mypreference, 
Context.MODE_PRIVATE);

    if (sharedpreferences.contains(Name)) 
{name.setText(sharedpreferences.getString(Name, ""));
    }

}

}

【问题讨论】:

  • 与您从任何活动中读取它的方式完全相同。 SharedPreferences 中保存的数据不依赖于 Activity。您可以从应用程序的任何组件中获取共享首选项。
  • 您使用键 Name 在 timer.java 中保存了共享首选项,现在使用 SaveRestTime.java 中的“Get”方法获取首选项。顺便说一句,在这种情况下你应该使用意图参数

标签: java android sharedpreferences


【解决方案1】:
SharedPreferences prefs = this.getSharedPreferences("myPref", Context.MODE_PRIVATE);
String lanSettings = prefs.getString("nameKey", null);

【讨论】:

  • 你能描述一下我在哪里以及如何使用这个代码
  • 无论您在哪里需要来自共享偏好的数据。可以是点击、onCreateView 等。
  • 那里有任何编码方面的专家,请给我最终的代码,先生,如果我已经知道如何输入此代码,那么我为什么来这里,请帮助我
  • 你在哪里需要偏好的数据
  • 我想在开始时将数据保存在计时器中
猜你喜欢
  • 2016-08-25
  • 1970-01-01
  • 2012-10-25
  • 1970-01-01
  • 2021-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多