android setText和getString使用变量名

时间:2013-02-27 20:22:48

标签: java android mobile gettext settext

所以,在网上搜索我发现很多不是我需要的例子......

以下是我的情况:

想象一下,你有一个名为歌曲的数组资源,以及每个歌曲名称的许多内容。所以,想象你在列表视图中显示了200首歌曲名称..

当您点击一首歌时,该应用会加载另一个包含该歌曲歌词的活动... 但你怎么做到的?

我是这样做的..我把这首歌的名字传给了这个新活动,加载了歌词所在的资源......

但是,当我必须用歌词setText时,我遇到了一个问题......我应该用200个案例进行切换吗?这听起来很疯狂,所以,我做的是,我在歌词中使用了同一首歌的名字。所以它应该像这样加载:

TextView txtProduct = (TextView) findViewById(R.id.product_label);

    Intent i = getIntent();
    // getting attached intent data
    String[] musicas = getResources().getStringArray(R.array.botafogo_songs);
    // this here is where it brings the name of the music to the activity
    String product = i.getStringExtra("product");
    // displaying selected product name
    if (Arrays.asList(musicas).contains(product)) {
            //just formating so they have the same name.
        String productSplit = product.split("- ")[1];
        productSplit.replace(" ", "");
        txtProduct.setText(getString(R.string.AbreAlas)); 
    }else{
        txtProduct.setText("não contem");
    }

好的,AbreAlas是我资源的名称..正常加载.. 但是,我不能这样离开...它应该是一个变量名称...... 像:R.string.+productSplit 或类似的东西..

我无法找到解决方案..

1 个答案:

答案 0 :(得分:0)

您可以使用getIdentifier()

int resourceName = getResources().getIdentifier(productSplit, "string", getPackageName());

然后:

txtProduct.setText(getString(resourceName));

不要忘记将其包裹起来并尝试捕获。