2016-07-15 88 views
0

我想传入字符串数组中的字符串资源值,但它没有在数组中取值。将采取空值如何传递字符串数组中的字符串资源引用android

下面是我的代码:

prepaid = getResources().getString(R.string.lbl_prepaid); 
dth = getResources().getString(R.string.lbl_dth); 

public String[] addedRTHomeList(){ 
     String[] homeList = {prepaid,dth,"PostPaid","Utility Services","Complaint Entry","Complaint Status","Recharge Status",chat,"Topup Request","Redeem Discount","Private Bus Booking","ST Bus Booking","Hotel Booking","Flight Booking","Money Transfer","Settings","Reports","DTH Activation"}; 
     return homeList; 
    } 


for(int i = 0; i < ba.addedRTHomeList().length ; i++) 
     { 
      md = new MenuDetail(); 
      md.setMenuName(ba.addedRTHomeList()[i]); 
      md.setImageId(ba.RTDrwableListThemeRed()[i]); 

      RTmenuListRed.add(md); 

      RTMenuThemeRed.put(ba.RTMenuCode()[i],RTmenuListRed); 
     } 

在for循环,当我访问addedRTHomeList数组的第一个值,它取空值

+0

为什么你不想使用<字符串数组>资源? –

+0

你不能这个'homeList = {prepaid,dth}'你只能用Array.combine –

+0

Thanx合并..如果可能请分享例子.. –

回答

0

取而代之的是,你可以在创建<string-array>你的string.xml。像,

<string-array name="your_array_name"> 
    <item>Element 1</item> 
    <item>Element 2</item> 
    <item>Element 3</item> 
    <item>Element 4</item> 
    . 
    . 
    . 

</string-array> 

在这之后,你可以在Java中获得的,

String[] mTestArray = = getResources().getStringArray(R.array.your_array_name); 

这或许有助于你的问题。

0

使用AarryList而不是简单的数组因为arraylist具有简单的动态实现。

当你创建数组时你已经告诉了它的长度。

public String[] addedRTHomeList(){ 
     String[] homeList = {prepaid,dth,"PostPaid","Utility Services","Complaint Entry","Complaint Status","Recharge Status",chat,"Topup Request","Redeem Discount","Private Bus Booking","ST Bus Booking","Hotel Booking","Flight Booking","Money Transfer","Settings","Reports","DTH Activation"}; 
     return homeList; 
    } 

像上面homeList是17大小,你不能在18指数增加值,因为18是不存在的,之所以你收到此错误

解决方案:

使用字符串ArrayList的例子使用

ArrayList<String> homeList = new ArrayList<String>(); 

homeList.add("PostPaid"); 
homeList.add("Complaint Status"); 
homeList.add("Recharge Status"); 

. 
. 
} 

从ArrayList中获取值homeList.get(index)简单地说。

现在,如果您添加了值,它将创建新的索引并将其添加到最后。 运气最好。

0

由于您试图将变量初始化为类变量,您将收到异常。我在addedRTHomeList()方法里面移动了初始化,发现没有问题。

试试这个代码,

public String[] addedRTHomeList(){ 
    String prepaid = getResources().getString(R.string.lbl_prepaid); 
    String dth = getResources().getString(R.string.lbl_dth); 
    String chat = getResources().getString(R.string.lbl_chat); 

    return new String[]{prepaid,dth,"PostPaid","Utility Services","Complaint Entry","Complaint Status","Recharge Status",chat,"Topup Request","Redeem Discount","Private Bus Booking","ST Bus Booking","Hotel Booking","Flight Booking","Money Transfer","Settings","Reports","DTH Activation"}; 
} 

String[] items = ba.addedRTHomeList(); 
for(int i = 0; i < items.length ; i++){ 
    md = new MenuDetail(); 
    md.setMenuName(items[i]); 
    md.setImageId(ba.RTDrwableListThemeRed()[i]); 

    RTmenuListRed.add(md); 

    RTMenuThemeRed.put(ba.RTMenuCode()[i],RTmenuListRed); 
} 
+0

它不是没有工作 –

+0

没有错误..它采取空 –

+0

不,在string.xml中值不为空.. –

相关问题