1

好的,这就是我所拥有的:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    title = (TextView) findViewById(R.id.title);
    description = (TextView) findViewById(R.id.description);
    Spinner dropdown = (Spinner) findViewById(R.id.mainMenu);
    final String options[] = {"-Turf Diseases-", "Dollar Spot", "Red Thread"};
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,options); 
    dropdown.setAdapter(adapter);

    dropdown.setOnItemSelectedListener(new OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
            newSelection(options[position]);                
        }
        public void onNothingSelected(AdapterView<?> arg0) {} 
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

public void newSelection(String selection) {
    if(!selection.contains("-")) {
        title.setText(selection);
        selection=selection.replace(" ", "_");
        selection=selection.toUpperCase();
        description.setText("@string/DESC_"+selection);
    }
}

options[] 的字符串数组包含草坪疾病菌株的标题(应用程序的目的)。它位于主 Activity 的微调器列表中,当用户单击标题时,动作侦听器会调用最后一个方法 newSelection。此方法应该将标题格式化为:WORD_WORD。

我将描述保存为 strings.xml 中的预定义字符串,全部以 DESC_WORD_WORD 开头。所以按照我的逻辑,我可以这样做:description.setText("@string/DESC_"+selection); 它很容易在strings.xml中找到相应的描述。

事实上,这并没有最终发生。文本只是更改为“@string/DESC_WORD_WORD”而不是预定义的字符串。我试图像一个面向对象的程序员一样思考,但它不适合我......我对 android 相当陌生,所以如果这是一个愚蠢的问题,请放轻松。

4

1 回答 1

0

您需要通过其字符串 ID 获取您的资源,这样就完成了......

@SuppressWarnings("rawtypes")
    public static int getResourceId(String name,  Class resType){

        try {
            Class res = null;
            if(resType == R.drawable.class)
                res = R.drawable.class;
            if(resType == R.id.class)
                res = R.id.class;
            if(resType == R.string.class)
                res = R.string.class;
            Field field = res.getField(name);
            int retId = field.getInt(null);
            return retId;
        }
        catch (Exception e) {
           // Log.d(TAG, "Failure to get drawable id.", e);
        }
        return 0;
    }

这是一个静态方法的示例,它将采用一个字符串,它是您的资源 ID 和资源类型,因此您可以调用它。

myText.setText( getResourceId("DESC_WORD_WORD", R.strings.class));
于 2013-07-30T21:19:06.943 回答