分类 android 下的文章

前言

阅读本文你需要:
基础的java知识 √
基础Android知识

教程思路

我们将创建一个 有 输入框(EditText) 和 按钮(Button) 的界面,
用户在输入框输入文字, 点击按钮后,程序将保存文本,
用户退出程序, 重新打开时依旧有上次输入的内容

让我们开始吧

主程序

创建一个SharedPreferences.

SharedPreferences sharedPreferences = getSharedPreferences("settings", Context.MODE_PRIVATE);

你可以看到我们在后面跟了一个get的方法,
第一个值是要获取的Preferences的名字, 我们随便起一个名字就好, 这里我们写 settings
然后第二个值是模式mode, 这里我们先默认PRIVITE

你的 MainActivity.java 现在应该和下面差不多

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_settings);
        SharedPreferences sharedPreferences = getSharedPreferences("settings", Context.MODE_PRIVATE);
    }
}

做一个自己的布局文件

我们在我们的主 Activity 的布局里面添加一个 EditText 编辑框, id 为 editText1,
然后在下面增加一个 Button 按钮, id 为 button1,
( 教程使用垂直的LinearLayout )

你的布局文件(/res/layout/activity_main.xml)大概像这样:

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="24dp"
            android:orientation="vertical">

            <EditText
                android:id="@+id/editText1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="textPersonName"
                android:text="" />
            <Button
                android:id="@+id/button1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="保存" />
</LinearLayout>

(善用Android Studio, 可以直接拖动添加部件)

完善主程序代码

接下来,我们需要给按钮增加一个监听事件, 当按钮被点击就能做些事情了,

    Button button_save = (Button)findViewById(R.id.button1);
    button_save.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
        }
    });

当然我们的IDE会提示,所以直接回车很省力

在onClick里面,我们要输入的就是 让程序获取EditText 文本框里的内容并保存到SharedPreference里的 代码了
写好以后大概就是这样的

    Button button_save = (Button)findViewById(R.id.button1);
    button_save.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
               EditText editText=(EditText)findViewById(R.id.editText1);
               String someText=String.valueOf(editText.getText());
               //someText的值就是editText的内容了
               sharedPreferences.edit().putString("text", someText).apply();
               //编辑,放入字符串,应用 ( 学好英语,理解方法的意思哈哈哈 )
        }
    });

接下来我们需要让程序加载时就会显示我们原先保存的字符
所以我们在稍微上面点的位置加入一行,

EditText editText_again=(EditText)findViewById(R.id.editText1);
editText_again.setText(sharedPreferences.getString("text",""));

(因为开始的时候可能没有editText这个变量..所以我们需要再把它找一遍)
然后就能在程序开始的时候取得我们保存的字符,如果没有获取到,就默认为空
现在你的主程序 MainActivity.java 看起来应该像这样:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_settings);
        SharedPreferences sharedPreferences = getSharedPreferences("settings", Context.MODE_PRIVATE);

        EditText editText_again=(EditText)findViewById(R.id.editText1);
        editText_again.setText(sharedPreferences.getString("text",""));

        Button button_save = (Button)findViewById(R.id.button1);
        button_save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                   EditText editText=(EditText)findViewById(R.id.editText1);
                   String someText=String.valueOf(editText.getText());
                   //someText的值就是editText的内容了
                   sharedPreferences.edit().putString("text", someText).apply();
                   //编辑,放入字符串,应用 ( 学好英语,理解方法的意思哈哈哈 )
            }
        });
    }
}

完成

运行程序, 输入文字, 点击保存, 关闭程序
再次打开程序, 会看到我们的文字依旧在那里!
这就是 SharedPreferences 的简单使用了!教程结束!

Google play有的时候 会download pending,即使是在有WIFI 的情况下,我来教你怎么修复这个情况

在设置中,所有应用找到google play ,然后清掉它的所有数据就行。也可以长按图标→应用信息→储存→清除数据 就行了

PS: 有的时候下载大型游戏, 一直不开始下载,可以先取消下载, 转到settings→app download preference 选择ask me every time. 然后再开始下载, 弹出的提示框中取消wifi的打勾,然后点按钮proceed就行了!

Sometimes, even if there's wifi, download pending still keep showing, I gonna teach you how to fix!

long press icon → app info→storage→ clear storage

( or just open settings, find google play store and clear storage.)

Finished!Now open your google play store and download whatever you want without download pending!

PS: if that didn't work, cancel your download, and go to play store settings → app download preference, choose ask me every time,then start your download, there will be a alter, uncheck the wifi opinion and proceed.

  1. You have to unlock bootloader first!(cilick here to find how to unlock boot loader!!!)
  2. In CMD run"adb reboot bootloader" or Manually reboot to bootloader(press power+volume down)
  3. Run "fastboot boot twrp_recovery.img" (twrp recovery.img change to your download file name, and should keep it in the same folder as fastboot.exe.)
  4. then phone will boot to twrp recovery, then flash twrp zip
  5. Finished!
  6. then flash the magisk zip in twrp recovery.
  7. Finished! again!




  1. 你需要先解锁BOOTLOADER(点击查看如何解锁)
  2. 在CMD中 "adb reboot bootloader" ,或者手动启动到bootloader,电源+音量下
  3. cmd中 "fastboot boot twrp_recovery.img" (
    twrp_recovery.img 替换成你自己下载的recovery名字,并且把它放到与 fastboot.exe同文件夹下)
  4. 手机会重启到twrp recovery里面,然后刷入twrp.zip的压缩包
  5. 完成!
  6. 然后在twrp recovery中刷入magisk包
  7. 又完成了!

tested on my pixel 1