переключение деятельности с использованием счетчика - PullRequest
0 голосов
/ 06 марта 2012

У меня есть приведенный ниже код, и мне нужно заполнить if(pos == 1){??????????}, чтобы я мог переключаться между действиями, когда выбрана первая позиция в моем счетчике.Имя моей новой деятельности - Route1.java.Как написать код для переключения на Route1.java, когда в моем счетчике выбрана позиция 1.

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());
    }
}

Ответы [ 2 ]

0 голосов
/ 06 марта 2012
  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);
    
0 голосов
/ 06 марта 2012

Вы должны прочитать о намерениях и, более конкретно, явных намерениях.

Чтобы явно запустить новое действие (например, созданное вами), синтаксис:

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

Также будетОбязательно добавьте новое действие в манифест Android:

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

Редактировать:

+ 1, чтобы не расширять Activity в своем слушателе, вместо этого просто напишите

public class MyOnItemSelectedListener implements OnItemSelectedListener {
    ....
}

Вы можете написать это таким образом, если ваша активность или прослушиватель слишком велики, и это уменьшит читабельность для записи в строку.

...