第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

SharedPreferences 的問(wèn)題 - 如何使用?

SharedPreferences 的問(wèn)題 - 如何使用?

慕沐林林 2023-06-21 16:13:24
我正在制作一個(gè)帶有計(jì)數(shù)器的應(yīng)用程序,當(dāng)我點(diǎn)擊 ImageView 時(shí)計(jì)數(shù)器會(huì)上升。這行得通,但現(xiàn)在我想將計(jì)數(shù)器保存到 SharedPreferences 對(duì)象。我試圖在 onCreate 方法中初始化 SP 對(duì)象,這顯然不起作用。當(dāng)我嘗試在全局范圍內(nèi)使用 sp.getInt(...) 時(shí),它也不起作用。我明白為什么會(huì)出現(xiàn)問(wèn)題(嘗試在 sp 對(duì)象初始化之前從它獲取 Integer),但我不知道如何解決它。public class MainActivity extends AppCompatActivity {    int counterint;    TextView counter;    String stringnumber;    SharedPreferences sharedPreferences = this.getSharedPreferences("com.example.hugelon", Context.MODE_PRIVATE);    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        sharedPreferences.getInt("hugcounter", 0);    }    public void hughim(View view){        counter = findViewById(R.id.countertv);        stringnumber = counter.getText().toString();        counterint = Integer.parseInt(stringnumber);        counterint++;        counter.setText(Integer.toString(counterint));        sharedPreferences.edit().putInt("hugcounter", counterint);    }}java.lang.RuntimeException:無(wú)法實(shí)例化活動(dòng) ComponentInfo {com.example.hugelon/com.example.hugelon.MainActivity}:java.lang.NullPointerException:嘗試調(diào)用虛擬方法'android.content.SharedPreferences android.content.Context??諏?duì)象引用上的 getSharedPreferences(java.lang.String, int)'Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.SharedPreferences android.content.Context.getSharedPreferences(java.lang.String, int)' 對(duì)空對(duì)象引用
查看完整描述

4 回答

?
躍然一笑

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊

getSharedPreferences()您在實(shí)際創(chuàng)建之前調(diào)用Activity。您需要初始化SharedPreferencesin onCreate():


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    sharedPreferences = this.getSharedPreferences("com.example.hugelon", Context.MODE_PRIVATE); // Here, this is initialized AFTER super.onCreate

    ...

}

Activity延伸自Context且 是Context所需要的SharedPreferences。我建議您在這里閱讀有關(guān) Android 活動(dòng)生命周期的信息:


https://developer.android.com/guide/components/activities/activity-lifecycle


為了證明該值確實(shí)被保存,您可以嘗試使用以下代碼來(lái)測(cè)試保存的值:


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    sharedPreferences = this.getSharedPreferences("com.example.hugelon", Context.MODE_PRIVATE); // Here, this is initialized AFTER super.onCreate


    int storedValue = sharedPreferences.getInt("hugcounter", 0);

    Toast.makeText(this, "Saved value: " + storedValue, Toast.LENGTH_LONG).show();

}

并且,不要忘記通過(guò)調(diào)用來(lái)存儲(chǔ)值apply():


SharedPreferences.Editor editor = sharedPreferences.edit();

editor.putInt("hugcounter", counterint);

editor.apply();


查看完整回答
反對(duì) 回復(fù) 2023-06-21
?
波斯汪

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊

你只是沒(méi)有在 oncreate 設(shè)置初始值


      public class MainActivity extends AppCompatActivity {


            int counterint;

            TextView counter;

            String stringnumber;

            SharedPreferences sharedPreferences;


            @Override

            protected void onCreate(Bundle savedInstanceState) {

                super.onCreate(savedInstanceState);

                setContentView(R.layout.activity_main);

    counter = findViewById(R.id.countertv);

        sharedPreferences = this.getSharedPreferences("com.example.hugelon", Context.MODE_PRIVATE);


                stringnumber=String.valueOf(sharedPreferences.getInt("hugcounter", 0));

counter.setText(stringnumber);

            }



            public void hughim(View view){


                counter = findViewById(R.id.countertv);


                stringnumber = counter.getText().toString();

                counterint = Integer.parseInt(stringnumber);

                counterint++;

                counter.setText(Integer.toString(counterint));


                sharedPreferences.edit().putInt("hugcounter", counterint);


            }


        }


查看完整回答
反對(duì) 回復(fù) 2023-06-21
?
DIEA

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超2個(gè)贊

SharedPreferences 在初始化之前需要一個(gè)活動(dòng)引用,這就是thisin 的目的:


SharedPreferences sharedPreferences = this.getSharedPreferences("com.example.hugelon", Context.MODE_PRIVATE);

您的代碼的問(wèn)題是this在您初始化 SharedPreferences 對(duì)象時(shí)它為空。這樣做的原因是它this在onCreate(). 因此,一個(gè)快速的解決方案是將 SharedPreferences 對(duì)象的初始化移動(dòng)到 onCreate 中。這是您的課程之后的樣子的片段:


public class MainActivity extends AppCompatActivity {


int counterint;

TextView counter;

String stringnumber;

SharedPreferences sharedPreferences;


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);


    sharedPreferences = this.getSharedPreferences("com.example.hugelon", Context.MODE_PRIVATE);

    sharedPreferences.getInt("hugcounter", 0);

  }


}

附錄:

將 的值sharedPreferences.getInt("hugcounter", 0)放入變量中,如下所示:


int myValue = sharedPreferences.getInt("hugcounter", 0);

我希望這有幫助。編碼愉快!


查看完整回答
反對(duì) 回復(fù) 2023-06-21
?
斯蒂芬大帝

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊

  1. 在 onCreate 方法中初始化 SharedPreference

  2. 您嘗試將 Int 放入 SharedPreference 但沒(méi)有保存它,因?yàn)槟枰{(diào)用

    sharedPreferences.edit().putInt("hugcounter",?counterint).apply()

    或者

    sharedPreferences.edit().putInt("hugcounter",?counterint).commit()

為了這個(gè)目的。因此使用commit()apply()保存在本地存儲(chǔ)中。

查看完整回答
反對(duì) 回復(fù) 2023-06-21
  • 4 回答
  • 0 關(guān)注
  • 225 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)