【问题标题】:How to concatenate a string with XML strings with setText and values coming from the view如何使用来自视图的 setText 和值将字符串与 XML 字符串连接起来
【发布时间】:2020-09-16 21:33:31
【问题描述】:

我在堆栈上看到了很多关于它的问答,但由于某种原因,它们在我的情况下不起作用。

我认为这可能是因为我直接在视图中处理元素。

此代码正在运行;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void btnOnClickRegister(View view){
     TextView txtEmail = findViewById(R.id.txtEmail);
     EditText edtTxtEmail = findViewById(R.id.edtTxtEmail);
     txtEmail.setText("Email "+ edtTxtEmail.getText().toString()); //hardcoded and will not translate
    }
}

在strings.xml中;

<string name="email">Email</string>

我收到以下警告;

不要连接用 setText 显示的文本。使用资源字符串 带占位符。

大多数问答都是这样解决的;

getString(R.string.email, VarContainingEmail);

使用如下所示的 XML;

<string name="email">Email %s</string>

如果我尝试这样做,我会收到以下警告;

无法解析“TextView”中的“getString”方法

我刚开始使用 android studio,想从一开始就解决这个问题。

我使用的是 Android Studio 4.0.1 版

【问题讨论】:

    标签: android


    【解决方案1】:

    这种方法请试一次,如果不行请告诉我

    <string name="email">Email, %1$s!</string>
    
    txtEmail.setText(getString(R.string.email, edtTxtEmail.getText().toString()));
    

    【讨论】:

    • 我是这么想的,但我得到了;格式字符串“电子邮件”不是有效的格式字符串,因此不应将其传递给 String.format
    • 你能展示一下你是如何实际尝试这种方法的吗?
    • 我明白了!我不得不更新所有值 res 文件。我只更新了一个,所以其中一些不是有效的字符串。更新所有语言后,它修复了错误。
    • 没错,@MadeInDreams 请展示您对代码所做的更改。还要告诉这段代码是在片段还是在活动中。如果片段使用getContext() 调用getString()。如果活动使用this 调用getString()
    【解决方案2】:

    您可能需要使用上下文来访问 getString:

    context.getString(R.string.email, VarContainingEmail);
    

    如果您在活动中,上下文可能是this

    编辑: 所以如果你在一个视图中,假设这个视图是变量view,你可以使用: view.getContext().getString(R.string.email, VarContainingEmail);

    【讨论】:

    • 如何在我的上下文中声明这个变量并为其赋值?这个变量在我的上下文中不存在,因为我正在从视图中读取值。
    • 在这种情况下,您可以使用以下方式访问上下文:view.getContext(),我编辑了我的答案。您可以使用this 访问您的视图,在这种情况下您可以使用this.getContext()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    相关资源
    最近更新 更多