【问题标题】:How can I set the @string reference with java如何使用 java 设置 @string 引用
【发布时间】:2013-06-01 08:24:11
【问题描述】:

我有 8 个按钮,每个按钮都应该将您带到同一个活动,但活动的标题会根据您按下的按钮而改变。

这背后的想法是我有 8 个电影屏幕,每个按钮对应一个屏幕(1 到 8)。所以在 onclick 方法中,我将对该屏幕使用正确的查询并将标题设置为该特定屏幕编号。有更好的方法可以做到这一点,我肯定喜欢使用下拉列表,但我只想知道我已经拥有什么。

有没有办法使用@string 引用来设置页面的标题,还是我需要在按钮的 onclick 方法中硬编码标题?

【问题讨论】:

    标签: android android-layout user-interface


    【解决方案1】:

    如果我理解正确,您想从 java 代码而不是 xml 访问字符串资源。您可以使用生成的 R 类来做到这一点。

    例如R.string.my_title。这将为您提供该特定条目的资源 ID。如果你想得到它的字符串值,你调用Context.getString(R.string.my_title)

    更多信息请见http://developer.android.com/guide/topics/resources/accessing-resources.html#ResourcesFromCode

    【讨论】:

    • 很酷,看起来很简单直接。
    • 是的,但是你怎么知道通过了哪个标题?
    • 啊,我一开始没有完全理解这个问题。 wyatt,请参阅 codeMagic 的答案。
    【解决方案2】:

    只需通过点击传递文本

    public void onClick(View v)
    {
        String title = ((Button).getText();
        Intent i = new Intent(MainActivity.this, NextActivitiy.class);
        i.putExtra("title", title);
        startActivity(i);
    }
    

    这是假设您所指的String resourceButton 的文本。您必须以一种或另一种方式发送标题,这样才能正常工作。

    然后在你的下一个 Activity 使用类似的东西

    Intent intent = getIntent();
    String title = intent.getStringExtra("title");
    

    【讨论】:

    • 我可以只使用标题字符串来设置我的标题标签的首选项吗? String titleString = getString(R.string.theater_number1);但我不知道如何使用类内部的方法设置首选项。
    • 现在我觉得我很困惑。根据按下的Button,您将拥有不同的标题,对吗?而下一个Activity 的标题是Button 按下的文字吗?这就是我看到你的问题的方式
    • 是的。当我说标题时,也许我们的意思不同。我调用的活动在屏幕顶部有一个文本视图,我想将该文本视图设置为“剧院 1”到 8。我认为你给我的很好我只是不知道如何访问那个特定的textview 并设置文本。
    • Buttons 上的文字是什么?这就是你想要的下一个Activity 的标题吗?或者你如何决定标题是什么?
    • 我回答了我自己的问题。您如何看待解决方案?
    【解决方案3】:

    想出了我想要的方式。如果有人有任何其他想法,我愿意改变它。我是 android 编程新手,所以我可能不明白。但这是我的解决方案。

        public void theaterOneButtonOnClick(View v) {
    
        String title = ("" + R.string.theater_number1);
        Intent i = new Intent(MainActivity.this, TheaterActivity.class);
        i.putExtra("title", title);
    
        startActivity(i);
    
    }
    
        @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.theater_activity);
    
        Intent intent = getIntent();
        String sTitle = intent.getStringExtra("title");
        TextView msgTextView = (TextView) findViewById(R.id.textView1);
        int title = Integer.parseInt(sTitle);
        msgTextView.setText(title);
    
    
    }
    

    }

    【讨论】:

    • 无论点击哪个按钮,您似乎都在设置相同的标题
    • @codeMagic 哦,我明白你在说什么。您假设我对所有 8 个按钮使用相同的侦听器。我没想到。在这种情况下,我需要像您建议的那样获取按钮文本。我是初学者。
    • 是的,因为他们都做同样的事情,但改变一个变量这是有意义的
    • 请参阅this answer 以在侦听器上使用。它将使您的代码更加高效和可读。我想我不明白你是怎么知道你想要哪个字符串的。我以为是Button 文本。但是这个答案应该可以帮助您整合您的代码。希望对你有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    相关资源
    最近更新 更多