2012-01-04 39 views
5

Tôi muốn tham chiếu một mảng chuỗi từ một mảng chuỗi khác trong chuỗi strings.xml. Nếu tôi cố gắng đọc chuỗi-array (có tên là "thực vật") trong hoạt động của tôi giá trị của mỗi mục là null.chuỗi chuỗi tham chiếu trong android strings.xml

Có khả năng nhận các giá trị này không?

Đây là một phần của strings.xml:

<string name="Orlaya_grandiflora_1">Orlaya grandiflora</string> 
<string name="Orlaya_grandiflora_2">Large-Flowered Orlaya</string> 
<string name="Orlaya_grandiflora_3">Apiaceae</string> 
<string-array name="Orlaya_grandiflora"> 
    <item>@string/Orlaya_grandiflora_1</item> 
    <item>@string/Orlaya_grandiflora_2</item> 
    <item>@string/Orlaya_grandiflora_3</item> 
</string-array> 
<string-array name="plants"> 
    <item>@array/Ginkgo_biloba</item> 
    <item>@array/Capsicum_frutescens</item> 
    <item>@array/Viscum_album</item> 
    <item>@array/Orlaya_grandiflora</item> 
</string-array> 

tôi cố gắng truy cập vào các giá trị như thế này, ví dụ:

String[] plantArray = resources.getStringArray(R.array.plants); 

for (String plant : plantArray) { 
     System.out.println("--> " + plant); 
    } 

Các giá trị của nhà máy là trong mọi trường hợp "null "

Mọi người đều biết cách truy cập các giá trị?

+0

"tài nguyên" exacly là gì? đối tượng hoặc người nào khác? –

+0

điều này bị thiếu: Tài nguyên resources = getResources(); – alex3000

Trả lời

6

Bạn nên làm như sau:

//obtain the array that refrences others array 
    TypedArray plantArray=getResources().obtainTypedArray(R.array.plants); 
    //obtain the referenced arrays 
    CharSequence[] ginkoArray=plantArray.getTextArray(0); 
    //... 
    CharSequence[] orlayaArray=plantArray.getTextArray(3); 
+0

Cảm ơn bạn, đây là những gì tôi đang tìm kiếm! – alex3000

+0

Ok. Bạn có thể chấp nhận câu trả lời nếu điều này đúng. –

21

dụ Straight nhất định trên: Android - String Resources

enter image description here

+1

điều này không hoạt động với tham chiếu đến chuỗi mảng, như tôi đã viết thi bên lên – alex3000

+0

Tại sao bạn đặt mảng chuỗi bên trong mảng chuỗi? Điều đó thậm chí có thể? Đối với tôi, có vẻ như bạn chỉ có thể đặt các tài nguyên chuỗi bên trong các mục chứ không phải các mảng chuỗi. – eMich

+2

@eMich nơi tôi đã đề cập về việc đặt mảng chuỗi bên trong mảng chuỗi? –

1
public class Test extends ListActivity { 
    String[] presidents; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ListView lstView = getListView(); 
    // lstView.setChoiceMode(0); //CHOICE_MODE_NONE 
    // lstView.setChoiceMode(1); //CHOICE_MODE_SINGLE 
    lstView.setChoiceMode(2); // CHOICE_MODE_MULTIPLE 
    lstView.setTextFilterEnabled(true); 

    presidents = getResources().getStringArray(R.array.presidents_array); 

    setListAdapter(new ArrayAdapter<String>(this, 
     android.R.layout.simple_list_item_checked, presidents)); 
    } 

    public void onListItemClick(ListView parent, View v, int position, long id) { 
    parent.setItemChecked(position, parent.isItemChecked(position)); 

    Toast.makeText(this, "You have selected " + presidents[position], 
     Toast.LENGTH_SHORT).show(); 
    } 
}; 

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 



</LinearLayout> 

strings.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="hello">Hello World, MainActivity!</string> 
    <string name="app_name">BasicViews5</string> 
    <string-array name="presidents_array"> 
     <item>Dwight D. Eisenhower</item> 
     <item>John F. Kennedy</item> 
     <item>Lyndon B. Johnson</item> 
     <item>Richard Nixon</item> 
     <item>Gerald Ford</item> 
     <item>Jimmy Carter</item> 
     <item>Ronald Reagan</item> 
     <item>George H. W. Bush</item> 
     <item>Bill Clinton</item> 
     <item>George W. Bush</item> 
     <item>Barack Obama</item> 
    </string-array> 
</resources> 
+0

+1 câu trả lời hay :) –

Các vấn đề liên quan