2015-02-07 2 views
0

Я пытаюсь динамически изменить текст и название одного из видов деятельности Main1, которая распространяется на Text1, где названия и Textes, я сделал этот код, но никогда не работал:Почему getIdentifier возвращается всегда 0 для строки

public class MainText1 extends Text { 


String 
tx1=text1,tx2=text2,tx3=text3, 
tl1=title1, tl2=title2,tl3=title3,tl,tx; 


    num = Integer.parseInt(getIntent().getStringExtra("somekey1")); // this data is coming from the menu, it depends on which button is clicked 

    tl="tl"+num; 
    tx="tx"+num; 

    stringId1 = getApplicationContext().getResources().getIdentifier(tl, "string", getPackageName()); 
    stringId2 = getApplicationContext().getResources().getIdentifier(tx, "string", getPackageName()); 

    if (stringId1 > 0) { 
     title=getApplicationContext().getResources().getString(stringId1); 
     text2=getApplicationContext().getResources().getString(stringId2); 
    } 

    else 
    { 
     title=Integer.toString(stringId1); 
     text2=Integer.toString(stringId2); 
    } 


    text1 = "<font color=#000080><b>" + title + "</b></font>"; 
    t1.setText(Html.fromHtml(text1)); 
    t2.setText(Html.fromHtml(text2)); 

проблема в том, что stringId1 и stringId2 дают значение 0.

+0

Вероятно потому, что ресурс не существует .. –

+0

нет она существует, и это супер код класса: 'общественного класса Text продляет активность { \t \t \t \t общественности Строка \t titl1 =«Кар», \t TEX1 = "GGGGG", \t titl2 = "2222", \t TEX2 = "kar2", \t \t titl3 = "333", \t TEX3 = "kar3";} ' – AndroDev

+0

Здесь может быть некоторая путаница, вы должны прочитать [документ о ресурсах] (http://developer.android.com/guide/topics/resources/index.html) –

ответ

0

В соответствии с просьбой в комментариях, с Map:

Map<String, String> theMap = new HashMap<String, String>(); 
theMap.put("tx1", text1); 
theMap.put("tx2", text2); 
theMap.put("tx3", text3); 
theMap.put("tl1", title1); 
theMap.put("tl2", title2); 
theMap.put("tl3", title3); 

num = Integer.parseInt(getIntent().getStringExtra("somekey1")); // this data is coming from the menu, it depends on which button is clicked 

tl="tl"+num; 
tx="tx"+num; 

if (theMap.containsKey("tl") { 
    title = theMap.get("tl"); 
} else { 
    // do something 
} 

if (theMap.containsKey("tx") { 
    text2 = theMap.get("tx"); 
} else { 
    // do something 
} 

Вы также можете поставить theMap в Text и раскрыть некоторые getTitle(int) и getText(int) метод или использование андроида resources mecanism


Также, если я могу, я бы посоветовал прочитать this java tutorial

Смежные вопросы