问题摘要: 当我通过打开任务窗口并滑动关闭来强制关闭应用程序时,我的 if/else 语句无法正常工作。我将名称选择活动作为默认启动器活动。仅当没有共享首选项时才会弹出名称选择活动,这意味着用户尚未从微调器中选择名称。但即使用户选择了一个名称并将其存储在共享首选项中,当我强制关闭应用程序时,我仍然会返回到名称选择活动我所尝试过的我尝试过if (stringNamePackage.equals(""))并且并且并且if (stringNamePackage == "")起初 我以为这是因为我的共享首选项没有正确保存名称,但事实并非如此,当我强制关闭它时,名称仍然正确显示。但是,当我尝试添加 if/else 语句时,它总是只会将我发送回名称选择活动,无论我是否在共享首选项中保存了名称。我花了 4 个小时试图让它发挥作用,但我却束手无策。我还花了几个小时查看有关如何保存和检索共享首选项数据的不同堆栈文章。我甚至尝试了如何检查 SharedPreferences 字符串是否为空或 null *android,但它仍然无法正常工作。if (NAME.equals(""))if (NAME == "")名称选择活动public class NameSelection extends AppCompatActivity implements AdapterView.OnItemSelectedListener { Spinner nameSpinner; String stringNamePackage; Button bSaveSelection; Context context; public ArrayAdapter<CharSequence> adapter; public static String SHARED_PREFS = "sharedPrefs"; public static String NAME = "name"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_name_selection); context = this; nameSpinner = findViewById(R.id.horizonNameSpinner); stringNamePackage = ""; //Create the list to populate the spinner List<String> nameList = new ArrayList<>(); nameList.add("01"); nameList.add("02"); nameList.add("03"); //Array Adapter for creating list //adapter = ArrayAdapter.createFromResource(this, R.array., android.R.layout.simple_spinner_item); adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, nameList); adapter.setDropDownViewResource(android.R.layout.simple_spinner_item); nameSpinner.setAdapter(adapter); nameSpinner.setOnItemSelectedListener(this);主要活动 此活动案例的目的是,当用户点击“测试”按钮时将其发送回名称选择屏幕,这将删除共享首选项,从而触发 if/else 语句并让用户选择名称。这是我在主活动中获取和设置名称的方法:在 onCreate 中
1 回答
繁花如伊
TA贡献2012条经验 获得超12个赞
要获取数据并将数据存储给您,SharedPreferences
您可以使用以下命令:
SharedPreferences sharedPreferences = getSharedPreferences(getPackageName(), Context.MODE_PRIVATE);
PreferenceManager.getDefaultSharedPreferences(context)
用于构建“设置”屏幕或类似屏幕,第一个使用它来存储/检索不一定绑定到 UI 的任意数据。
更重要的是,如果您想组织您的内容,SharedPreferences
您可以附加getPackageName()
不同的键,例如:
getSharedPreferences(getPackageName() + ".booleans", Context.MODE_PRIVATE); getSharedPreferences(getPackageName() + ".flags", Context.MODE_PRIVATE); getSharedPreferences(getPackageName() + ".keys", Context.MODE_PRIVATE);
它们中的每一个都是存储共享首选项的不同文件,您可以省略前面的点.
,但为了命名一致性,最好保留它,实际上不需要额外的键,但如果您有某种强迫症,这可能会“放松”;-)。
然后您可以使用 Android Studio 的设备资源管理器浏览共享首选项,它们位于“data/data/ your.package.name /shared_prefs”下
添加回答
举报
0/150
提交
取消