【问题标题】:how can i use share preference in counter in android?我如何在 android 的计数器中使用共享偏好?
【发布时间】:2016-02-16 10:14:24
【问题描述】:

对不起,我有 3 个简单的问题,但我需要你的帮助。我想在我的应用程序中有一个计数器(使用shared preference),如下所示:

  • 首先,有2个按钮,STARTRESET。如果RESET 是 点击后,计数器从0 开始。 此外,如果单击START,计数器将从共享偏好数据开始。
  • 开始计数
  • 最后,我想在共享偏好中保存计数器。 (但我不知道将其保存在 BACK btn 或 CLICK btn 中更好)

我的问题在于共享偏好部分。请帮助我,我该怎么做?非常感谢!


编辑:这是我的代码

public class CountActivity extends Activity {
private Button click;
private int count,savedCount;
private String count_text;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.counting);

    click= (Button) findViewById(R.id.vow_counting);
    final Typeface typeface = Typeface.createFromAsset(getAssets(),"fonts/Far_Homa.ttf");

    final SharedPreferences sharedPreferences=getSharedPreferences("counters", Context.MODE_PRIVATE);
    final SharedPreferences.Editor editor=sharedPreferences.edit();

    AlertDialog.Builder fBuilder=new AlertDialog.Builder(VowCountActivity.this);

    fBuilder.setMessage("please choose");
    fBuilder.setCancelable(false);

    fBuilder.setPositiveButton("start from beging", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialogInterface, int i) {
            count = sharedPreferences.getInt("counter", 0);

            click.setText("0");
            click.setTypeface(Typeface.createFromAsset(getAssets(),"fonts/Far_Homa.ttf"));
            dialogInterface.cancel();
        }
    });

    fBuilder.setNegativeButton("countinue", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialogInterface, int i) {
            count = sharedPreferences.getInt("counter",savedCount);

            editor.putInt("counter",savedCount).commit();
            dialogInterface.cancel();
        }
    });

    fBuilder.show();



    click.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
           count++;
           count_text=Integer.toString(count);
           click.setText(count_text);
           click.setTypeface(typeface);
           savedCount = sharedPreferences.getInt("savedCounter", count);
           vibrate(500);
        }
    });
}


// vibrate
public void vibrate(int duration)  {
    Vibrator vibs = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
    vibs.vibrate(duration);
}

【问题讨论】:

  • 你能举个例子给我看看你做了什么吗……我投了赞成票……如果你不展示你做了什么,很多人都会投反对票…… .
  • 非常感谢所有帮助。我阅读了所有答案并执行以下操作。现在我有 2 个问题:
  • 1- 如何在 SP 中保存“count”并在 COUNTINUE btn 中继续?
  • 2- VIBRATE 方法不能正常工作?(“显示应用程序已停止”)。为什么?

标签: android sharedpreferences counter


【解决方案1】:

要获得开始按钮的价值,您可以定义此功能并为共享偏好设置价值

public static int getIntPreferences(String key) {
    SharedPreferences settings = context.getSharedPreferences(SP_FILE_NAME, 0);
    return settings.getInt(key, 0);
}

现在要重置您的共享偏好值,您可以使用以下功能

public static void updatePreferences(String key, int value) {
    SharedPreferences settings = context.getSharedPreferences(SP_FILE_NAME, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = settings.edit();
    editor.putInt(key, value);
    editor.commit();

}

【讨论】:

    【解决方案2】:

    使用

            SharedPreferences preferences = getSharedPreferences("PROFILE", Context.MODE_PRIVATE);
            SharedPreferences.Editor edit = preferences.edit();
            edit.putString("yourPreferenceName", yourPreferenceObject);
            edit.commit();
    

    保存偏好

           SharedPreferences preferences = this.getSharedPreferences("PROFILE", Context.MODE_PRIVATE);
           String string = preferences.getString("yourPreferenceName", "defaultReturn");
    

    用于接收您的 sharedPreferences .get 和 .put 的返回类型

    【讨论】:

      【解决方案3】:

      试试这个:

      SharedPreferences preferences = getSharedPreferences("counterStat", Context.MODE_PRIVATE);
      SharedPreferences.Editor edit = preferences.edit();
      
                   btnStart.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                      int counter = preferences.getInt("counter", 0);
                   // counter = counter + 1;  start counting  
                      edit.putInt("counter", counter).commit();
                     }
                   });
      
                  btnReset.setOnClickListener(new View.OnClickListener() {
                   @Override
                   public void onClick(View v) {   
                    edit.putInt("counter", 0).commit();
                   }
                  });
      

      回话:

        int counter = preferences.getInt("counter", 0);
        edit.putInt("savedCounter", counter).commit();
      

      对话取消:

       int counter = preferences.getInt("counter", 0);
       edit.putInt("savedCounter", counter).commit();
       edit.putInt("counter", 0).commit();
      

      然后你可以使用: int savedCounter = preferences.getInt("savedCounter", 0);任何地方

      【讨论】:

        【解决方案4】:

        以下是如何将条目添加到 SharedPrefs 并保存到磁盘。

        SharedPreferences settings = getSharedPreferences("my_prefs", 0);
        SharedPreferences.Editor editor = settings.edit();
        editor.putString("name", "Adam");
        editor.commit();
        

        这是从 SharedPrefs 读取保存值的方法。

        SharedPreferences settings = getSharedPreferences("my_prefs", 0);
        String name = settings.getString("name", null);
        

        【讨论】:

          【解决方案5】:

          你应该使用这个代码,你的兄弟L

          public class CountActivity extends Activity {
          private Button click;
          private int count,savedCount;
          private String count_text;
          
          public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.counting);
          
              click= (Button) findViewById(R.id.vow_counting);
              final Typeface typeface = Typeface.createFromAsset(getAssets(),"fonts/Far_Homa.ttf");
          
              final SharedPreferences sharedPreferences=getSharedPreferences("counters", Context.MODE_PRIVATE);
              final SharedPreferences.Editor editor=sharedPreferences.edit();
          
              AlertDialog.Builder fBuilder=new AlertDialog.Builder(VowCountActivity.this);
          
              fBuilder.setMessage("choose");
              fBuilder.setCancelable(false);
          
              fBuilder.setPositiveButton(firstا", new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialogInterface, int i) {
                      count =0;
                      savedCount=0;
                      click.setText("0");
                      click.setTypeface(Typeface.createFromAsset(getAssets(),"fonts/Far_Homa.ttf"));
                      dialogInterface.cancel();
                  }
              });
          
              fBuilder.setNegativeButton("countinue", new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialogInterface, int i) {
                      count = sharedPreferences.getInt("counter",savedCount);
                      count_text=Integer.toString(count);
                      click.setText(count_text);
                      click.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/Far_Homa.ttf"));
                      dialogInterface.cancel();
                  }
              });
          
              fBuilder.show();
          
          
          
              click.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View view) {
                     count++;
                     savedCount=count;
                     count_text=Integer.toString(count);
                     click.setText(count_text);
                     click.setTypeface(typeface);
                     editor.putInt("counter",savedCount).commit();
                     savedCount = sharedPreferences.getInt("savedCounter", count);
          
                  }
              });
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-05-17
            • 2019-06-20
            • 1970-01-01
            • 1970-01-01
            • 2012-06-05
            • 2021-01-27
            相关资源
            最近更新 更多