2016-02-19 3 views
-2

Я практикую, как добавить строку к адъюванту счетчика. Если я объявляю строку в Java деятельности, работает отлично, но если я делать в string.xml:Струнные ресурсы

<string-array name="tabs"> 
    <item>tab</item> 
    <item>tab1</item> 
    <item>tab2</item> 
    <item>tab3</item> 
    <item>tab4</item> 
    <item>tab5</item> 
</string-array> 

и в Java

ArrayAdapter<String> adapterr1 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, R.array.tabs); 

не работают.

В чем проблема? Благодаря

Это полный код, потому что у меня есть проблемы, йота приложения (аварии)

public class MainActivity extends AppCompatActivity { 

    Spinner OptionSpinner; 
    TextView textview; 


    String[] stabs= getResources().getStringArray(R.array.tabs); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     OptionSpinner = (Spinner) findViewById(R.id.OptionSpinner); 
     textview = (TextView) findViewById(R.id.textview); 

     ArrayAdapter adapter1 = new ArrayAdapter(this, android.R.layout.simple_spinner_item, stabs); 

     adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     OptionSpinner.setAdapter(adapter1); 

     OptionSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       textview.setText("seleccionado: " + parent.getItemAtPosition(position)); 
       if(position==1){ 
        Intent IntentActT1 = new Intent(MainActivity.this, ActTab1.class); 
        startActivity(IntentActT1); 
       } 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 

      } 
     }); 


    } 
} 
+0

Класс адаптера массива принимает список как его конечный параметр. Не целое число ресурсов. –

+0

Пожалуйста, обратитесь к http://stackoverflow.com/questions/10532907/android-retrieve-string-array-from-resources –

ответ

0
String[] stabs= getResources().getStringArray(R.array.tabs); 
ArrayAdapter adapterr1 = new ArrayAdapter(this, android.R.layout.simple_spinner_item, stabs); 

Отредактировано 1

public class MainActivity extends AppCompatActivity { 

Spinner OptionSpinner; 
TextView textview; 
String[] stabs; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    OptionSpinner = (Spinner) findViewById(R.id.OptionSpinner); 
    textview = (TextView) findViewById(R.id.textview); 
    stabs= getResources().getStringArray(R.array.tabs); 

    ArrayAdapter adapter1 = new ArrayAdapter(this, android.R.layout.simple_spinner_item, stabs); 

    adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    OptionSpinner.setAdapter(adapter1); 

    OptionSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      textview.setText("seleccionado: " + parent.getItemAtPosition(position)); 
      if(position==1){ 
       Intent IntentActT1 = new Intent(MainActivity.this, ActTab1.class); 
       startActivity(IntentActT1); 
      } 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 

     } 
    }); 


} 
} 
+0

Я пытаюсь это сделать, но приложение crash – Ariel

+0

опубликует полный код – sasikumar

+0

ОК, спасибо Я сделал это – Ariel

0

Конструктор ArrayAdapter<String>(Context, int, int) не использует третий аргумент как идентификатор ресурса массива; он использует его как идентификатор TextView, чтобы использовать для отображения каждого элемента в макете. Вместо этого вы можете передать getStringArray(R.array.tabs) в качестве третьего аргумента (или getContext().getStringArray(R.array.tabs), если этот код не находится в Activity).

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