【问题标题】:Spinner choice to be used across multiple activities用于多个活动的微调器选项
【发布时间】:2016-10-16 14:49:59
【问题描述】:

尝试了该网站上其他帖子建议的几种方法后,我只能假设我很厚,所以如果有人可以浏览我的代码,我将不胜感激。

我在一个活动的微调器中选择了一个项目并将该项目存储为一个字符串,然后将该字符串传递给下一个活动并在一个 该活动中的文本视图。这是一种享受。

我现在想做的是将该字符串传递给第三个活动,并在第三个活动的另一个文本视图中显示它。

为了实现这一点,这里是我单击按钮后第一个活动的代码。

Intent recordissues2 = new Intent(RecordIssue.this, RecordIssue2.class); Bundle sitename = new Bundle(); sitename.putString("txt1a",spinnerbuilding.getSelectedItem().toString()); recordissues2.putExtras(sitename); startActivity(recordissues2);

对于 onCreate 中的第二个活动

Bundle sitename = this.getIntent().getExtras(); String txt1a = sitename.getString("txt1a"); ((TextView) findViewById(Sitelbl2)).setText(txt1a);

如果您可以帮助我提供一些示例代码以实现下一步以及它应该去哪里,最好是它的工作原理,那将是完美的。

提前谢谢你。 瑞克

【问题讨论】:

    标签: android string android-activity textview spinner


    【解决方案1】:

    您可以使用共享首选项来存储数据并在整个应用程序中的任何活动类中使用它们:

        SharedPreferences myprefs= this.getSharedPreferences("shared_key", MODE_WORLD_READABLE);
        myprefs.edit().putString("spinner_value", value).commit();
    

    您可以像这样在您的应用中检索此信息:

        SharedPreferences myprefs= getSharedPreferences("shared_key", MODE_WORLD_READABLE);
        String spinner_value= myprefs.getString("spinner_value", null);
    

    【讨论】:

    • 谢谢,好像我遗漏了什么,显然我有限的知识存在差距,因为当我使用您的代码时,它告诉我“无法解析符号'值'”所以从来没有'价值'我意识到我必须改变它,但要改变什么?我已将代码放在点击事件中,但在打算移动到下一个事件之前,我不确定这可能是错误的。
    • 没问题,,,这里 value= spinnerbuilding.getSelectedItem().toString();您要保存的微调器值...如果有效,请您接受答案
    • 嗯,我使用了你的代码,它给了我足够的理解,使我能够进行所需的更改以使其工作。
    • 以下是我使用的更改:
    • 第一个活动:'SharedPreferences myprefs= this.getSharedPreferences("shared_key", Context.MODE_PRIVATE); SharedPreferences.Editor 编辑器 = myprefs.edit(); editor.putString("spinner_value", spinnerbuilding.getSelectedItem().toString()); editor.apply();'第二个活动'SharedPreferences myprefs=getSharedPreferences("shared_key", Context.MODE_PRIVATE);字符串 spinner_value = myprefs.getString("spinner_value",""); ((TextView)findViewById(R.id.tvbuilding)).setText(spinner_value);'
    【解决方案2】:

    在您的RecordIssue2 活动中,您已经将文本存储为txt1a。使用相同的概念,在导航到第三个活动时将其添加到您的 Intent 的包中。

    Intent recordissues3 = new Intent(RecordIssue2.this, RecordIssue3.class);
    Bundle sitename = new Bundle();
    sitename.putString("txt1a",txt1a);
    recordissues3.putExtras(sitename);
    startActivity(recordissues3);
    

    【讨论】:

    • 谢谢,但与上面的回复一样,我得到“无法解析符号 'txt1a'” where “sitename.putString("txt1a",IS ROBLEM)"
    • 您应该在第二个活动中的Bundle sitename = this.getIntent().getExtras(); String txt1a = sitename.getString("txt1a"); ((TextView) findViewById(Sitelbl2)).setText(txt1a); 之后执行此操作,以便已经定义了txt1a,可能在按钮的onClick 中。
    • 您好,我已经接受了另一个答案,但是如果您查看我的其他问题并在此处发布此解决方案,我已经询问了它是如何在不使用 sharedprefs 的情况下完成的,并且您的解决方案确实有效,我会标记它是正确的。谢谢。
    • 不是问题,只要你的问题解决了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    相关资源
    最近更新 更多