2013-05-22 4 views
0

У меня возникли проблемы с внедрением spinner в мой код. Не совсем уверен, как это работает. Но вот краткое представление о том, что я хочу делать. (Например: нажмите на счетчик, и у вас есть 2 варианта «стр. 2» и «стр. 3». Поэтому, если вы нажмете «страница 2», он перейдет на вторую страницу с новым контентом. Есть ли способ сделать это?Spinners пункт, выбранный для перехода на другую страницу

у меня также есть изображения кнопок, чтобы перейти на следующую страницу и обратно. Просто хочу, чтобы реализовать коробку вращателя, так что вы можете перемещаться по разным страницам быстрее.

public class AppActivity extends Activity implements OnTouchListener { 

private MediaPlayer mp; 
ImageButton button; 
ImageButton button3; 
ImageView imgView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    final String[] spstr = getResources().getStringArray(R.array.spinnervalue); 
    final Spinner sp = (Spinner)findViewById(R.id.spinner1); 
    final ArrayAdapter<String> ar = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,spstr); 
    sp.setAdapter(ar); 

    sp.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, 
       int position, long id) { 

      String s=((TextView)view).getText().toString(); 
      if(s.equals("page2")) 
       startActivity(new Intent(view.getContext(),App2Activity.class)); 
      if(s.equals("page3")) 
       startActivity(new Intent(view.getContext(),App3Activity.class)); 

     } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub 

     } 


    }); 


} 



public void addListenerOnButton() { 



    final Context context = this; 
    button3 = (ImageButton) this.findViewById(R.id.imageButton5); 
    button3.setOnTouchListener(this); 


    mp = MediaPlayer.create(this, R.raw.vanilla_twilight); 




    button = (ImageButton) findViewById(R.id.imageButton1); 
    button.setOnClickListener(new OnClickListener() { 


     @Override 
     public void onClick(View arg0) { 

      Intent intent = new Intent(context, App2Activity.class); 
         startActivity(intent); 

     } 

    }); 

} 

@Override 
public boolean onTouch(View v, MotionEvent event) { 
    if (event.getAction() == MotionEvent.ACTION_DOWN) { 
     MediaPlayer mp = MediaPlayer.create(getBaseContext(), 
       R.raw.vanilla_twilight); 
     mp.start(); 
     mp.setOnCompletionListener(new OnCompletionListener() { 

      @Override 
      public void onCompletion(MediaPlayer mp) { 
       mp.release(); 
      } 
     }); 
    }; 
    return true; 
} 

}

XML

<Spinner 
    android:id="@+id/spinner1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" /> 

ошибок LogCat

05-22 01: 32: 40.058: Е/SpannableStringBuilder (16206): SPAN_EXCLUSIVE_EXCLUSIVE пролеты не может иметь нулевую длину 05-22 01: 32: 40,058: Е/SpannableStringBuilder (16206): SPAN_EXCLUSIVE_EXCLUSIVE пролеты не может имеют нулевую длину

ресурсов стр.2 page3

+0

Настройка 3 деятельности. например AppActivity1, AppActivity2, AppActivity3. AppActivity1 позволяет вам выбирать AppActivity2 или 3, AppActivity2 позволяет вам выбрать 1 или 3 и т. Д. – mrres1

+0

У меня есть три приложения app1 app2 и app3. Я могу легко перемещаться между этими тремя страницами с помощью кнопок, но не знаю, как я буду реализовывать их с помощью прядильщиков. – Dan

+0

'startActivity (новый Intent (контекст, AppActivity2.class));' – mrres1

ответ

0

Я согласен с @ mrres1. Вам нужно просто создать отдельные действия для каждого экрана (или Fragments) для каждого. setContentView(layout) ничего не сделает, не разрешено.

Вы также можете изучить внедрение Dropdown ActionBar (example here).

+0

Я по-прежнему новичок в разработке Android, поэтому не совсем уверен, что вы имеете в виду, когда используете слово фрагменты. Можете ли вы вкратце привести пример? Спасибо :) – Dan

+0

Извините за это. : D Проверьте ссылки, предоставленные @Tommy. Они являются хорошими отправными точками. Я лично рекомендую [это] (http: //mobile.tutsplus.com/tutorials/android/android-sdk_fragments /). – deubaka

+0

lol спасибо! noob здесь Xp – Dan

1

Используйте startActivity, чтобы открыть другие виды деятельности, это требует основного Intent

sp.setOnItemSelectedListener(new OnItemSelectedListener() 
{ 
    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
    { 
     String s=((TextView)arg1).getText().toString(); 

     if(s.equals("page2")) 
      startActivity(new Intent(view.getContext(), AppActivity2.class)); 

     if(s.equals("page3")) 
      startActivity(new Intent(view.getContext(), AppActivity3.class)); 
    } 
}); 

Ты массив ресурсов не может быть установлен правильно.

Это должно выглядеть примерно так:

<string-array name="spinnervalue"> 
    <item>page2</item> 
    <item>page3</item> 
</string-array> 

+0

Я обновил свой код. Я решил включить весь свой код, потому что я попробовал то, что вы разместили, и счетчик пока не появляется. Так что я считаю, что это может быть мое позиционирование кодов? Я также включил ошибки logcat. – Dan

+0

Можете ли вы опубликовать сообщение 'R.array.spinnervalue'? По трассе стека кажется, что массив пуст. Задайте точку останова в 'final String [] spstr ...', перейдите на одну строку, а затем увидите, что 'spstr' имеет любые значения или если она равна нулю. – mrres1

+0

Или, может быть, 'String s' ничего не назначается. Хотя, я полагаю, для этого вы получите исключение NullPointerException. Вы можете попробовать 'String s = getResources(). GetStringArray (R.array.spinnervalue) [позиция]' – mrres1

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