选择旋转器项目以转到不同的页面

时间:2013-05-22 02:01:47

标签: android android-spinner

我在我的代码中实现微调器时遇到问题。不太确定它是如何工作的。但这里简要介绍了我想做什么。 (例如:点击微调器,你有2个选项“第2页”和“第3页”。所以,如果你点击“第2页”,它将转到第2页的新内容。有没有办法实现这一点?

我还有图像按钮可以转到下一页并返回。只想实现一个微调框,以便您可以更快地导航到不同的页面。

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:E / SpannableStringBuilder(16206):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能为零长度 05-22 01:32:40.058:E / SpannableStringBuilder(16206):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能为零长度

资源              第2页         第3页
    

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

我同意@ mrres1。您应该为每个屏幕(或Fragments)创建单独的活动。 <{1}}不会做任何事情。

您还可以考虑实施下拉列表setContentView(layout)example here)。

答案 2 :(得分:0)

我建议考虑碎片。 http://developer.android.com/guide/components/fragments.html

或者为了轻松实现它,您可以使用ActionBarSherlock库。 http://actionbarsherlock.com