2012-03-06 25 views
0

以下のコードがあります。if(pos == 1){??????????}を入力して、スピナーの最初の位置が選択されたときにアクティビティを切り替える必要があります。私の新しい活動の名前はRoute1.javaです。 私のスピナーで位置1が選択されている場合、Route1.javaに切り替えるコードを書くにはどうすればよいですか?スピナーを使用したアクティビティの切り替え

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.net.Uri; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.Toast; 
import android.Manifest.permission; 

public class MyOnItemSelectedListener extends Activity 
     implements OnItemSelectedListener { 

    public void onItemSelected(AdapterView<?> parent, 
      View view, int pos, long id) { 
     if (pos == 1) { 
     } else { 
      Toast.makeText(parent.getContext(), 
        "Your route is " 
        + parent.getItemAtPosition(pos).toString(), 
        Toast.LENGTH_LONG).show(); 
     } 
    } 

    public void onNothingSelected(AdapterView parent) { 
     // Do nothing. 
    } 
} 

上記のクラスが

import java.lang.reflect.Array; 
import android.R.array; 
import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.View; 
import android.webkit.WebView; 

import android.widget.AbsSpinner; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.Spinner; 
import android.widget.Toast; 


public class cnycentro extends Activity {   

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

     Spinner spinner = (Spinner) findViewById(R.id.spinner); 
     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
       this, R.array.routes, android.R.layout.simple_spinner_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner.setAdapter(adapter); 

     spinner.setOnItemSelectedListener(new MyOnItemSelectedListener()); 
    } 
} 

答えて

0

このクラスで使用されているあなたは、意図や、より具体的に明示的な意図をよく読んでなければなりません。明示的に新しい活動(のようなあなたが作成したもの)を起動するために

構文は次のとおりです。

Intent newActivity = new Intent(this, Route1.class); 
startActivity(newActivity); 

はまた、Androidのマニフェストに新しいアクティビティを追加してください:

<activity android:name=".Route1"></activity> 

編集:

+1あなたのリスナーでアクティビティを伸ばしないでください。代わりに、単に書きます。

public class MyOnItemSelectedListener implements OnItemSelectedListener { 
    .... 
} 

アクティビティーまたはリスナーが大きすぎると、この方法で記述できます。これは、インラインで記述する際の読みやすさを低下させます。

0
  1. MyOnItemSelectedListener()は別のクラスである必要はなく、Activityから継承してはなりません。
  2. このような何かにあなたのコードを変更し

    OnItemSelectedListener listener = new OnItemSelectedListener(){ 
    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, 
         int position, long id) { 
        //do you really want 1 here or 0? 
        if (position == 1) { 
         view.getContext().startActivity(new Intent(view.getContext().getApplicationContext(),Route1.class)); 
        }else{ 
         Toast.makeText(parent.getContext(), "Your route is " + 
            parent.getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show(); 
    
        } 
    } 
    @Override 
    public void onNothingSelected(AdapterView<?> arg0) { 
        // TODO Auto-generated method stub 
    
    } 
    }; 
    spinner.setOnItemSelectedListener(listener); 
    
関連する問題