【问题标题】:Launch different activities depending on spinner selection根据微调器选择启动不同的活动
【发布时间】:2014-10-06 15:16:15
【问题描述】:

我有两个微调器和一个按钮的活动。第二个微调器的值会根据第一个微调器中选择的项目而变化。

现在,我想做的是在按下“确定”按钮后根据第二个微调器中的选择启动一个活动或另一个活动。

这里是主要活动的代码:

public class UniversityActivity extends Activity implements OnItemSelectedListener {

Spinner s1, s2;
Button acceptbutton;

@Override
protected void onCreate(Bundle savedInstanceState) {

    getActionBar().setDisplayHomeAsUpEnabled(true);

    super.onCreate(savedInstanceState);
    setContentView(R.layout.university_layout);
    addListenerOnButton();

    s1 = (Spinner) findViewById(R.id.spinner1);
    s2 = (Spinner) findViewById(R.id.spinner2);
    s1.setOnItemSelectedListener(this);
}

public void addListenerOnButton() {
    final Context context = this;

    acceptbutton = (Button) findViewById(R.id.accept);
    acceptbutton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            Intent intent = new Intent(context, DegreeActivity.class);
            startActivity(intent);
            overridePendingTransition(R.anim.slide_in, R.anim.slide_out);
        }
    });

}

@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
        long arg3) {
    String sp1= String.valueOf(s1.getSelectedItem());
    if(sp1.contentEquals("Universidad Politécnica de Madrid")) {
        List<String> list = new ArrayList<String>();
        list.add("Grado en Ingeniería Aeronáutica");
        list.add("Grado en Ingeniería Geológica");
        list.add("Grado en Ingeniería Informática");
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, list);
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        dataAdapter.notifyDataSetChanged();
        s2.setAdapter(dataAdapter);
    }
    if(sp1.contentEquals("Universidad Autónoma de Madrid")) {
        List<String> list = new ArrayList<String>();
        list.add("Grado en Historia");
        list.add("Grado en Ingeniería Química");
        list.add("Grado en Ingeniería en Tecnologías Industriales");
        ArrayAdapter<String> dataAdapter2 = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, list);
              dataAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        dataAdapter2.notifyDataSetChanged();
        s2.setAdapter(dataAdapter2);
    }

}

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

}

}

这是它的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<!-- Select university -->
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="8dp"
    android:text="@string/selectuniv"
    android:textColor="@color/yellow" />

<!-- Spinner 1 Dropdown -->
<Spinner
    android:id="@+id/spinner1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginTop="5dp"
    android:entries="@array/univ" />

<!-- Select degree -->
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="8dip"
    android:text="@string/selectdeg"
    android:textColor="@color/yellow" />

<!-- Spinner 2 Dropdown -->
<Spinner
    android:id="@+id/spinner2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp" />

<!-- Accept button -->
<Button
    android:id="@+id/accept"
    android:layout_width="250dp"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginTop="10dp"
    android:textSize="13sp"
    android:textColor="#ffffff"
    android:text="@string/accept"
    android:background="@drawable/custombutton2" />

 </LinearLayout>

我希望你能帮助我。非常感谢。

【问题讨论】:

  • 从微调器中获取选定的文本并检查何时单击接受按钮

标签: android button android-activity spinner


【解决方案1】:

每次第二个微调器的值发生变化时,通过在文件顶部声明一个字符串,将其保存在一个全局字符串变量中。像这样:

public class UniversityActivity extends Activity implements OnItemSelectedListener {

Spinner s1, s2;
Button acceptbutton;
String _globalString 

@Override
protected void onCreate(Bundle savedInstanceState) {

    getActionBar().setDisplayHomeAsUpEnabled(true);

    super.onCreate(savedInstanceState);

............................................................

现在,每次微调器更改值时,您都需要将所选字段的值保存到该字符串中。

loginSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view,
                int position, long id) {
            _globalString = parent.getItemAtPosition(pos);
        }

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

        }
    });

然后您可以访问第二个微调器的最后一个选定值。然后每次按下按钮时,您都会检查我的 _globalString 与什么值匹配?

 acceptbutton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
if(_globalString == "activity1")
{
 Intent intent = new Intent(context, Activity1.class);
                startActivity(intent);
                overridePendingTransition(R.anim.slide_in, R.anim.slide_out);
}

if(_globalString == "activity2")
{
 Intent intent = new Intent(context, Activity2.class);
                startActivity(intent);
                overridePendingTransition(R.anim.slide_in, R.anim.slide_out);
}

            }
        });

希望对你有帮助

【讨论】:

  • 有效!这正是我一直在寻找的。非常感谢!
【解决方案2】:

尝试从 Spinner 获取 Selected 文本并使用 switchif-else。使用getSelectedItem().toString() 例如:

String textFromSpinner = spinner.getSelectedItem().toString();
if(textFromSpinner.equals("TEXT1")){
Intent intent = new Intent(Acivity.this, NextAcivitiy.class);
startActivity(intent);
}
else if(textFromSpinner.equals("TEXT2")){
//start another
}
else if(...){
//similarly
}

【讨论】:

    【解决方案3】:

    您可以使用setOnItemSelectedListener

    loginSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    
            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub
    

    按字符串

      String selectedItem = parent.getItemAtPosition(position).toString();
       if(selectedItem.equalsIgnoreCase("compareString"))
                {
        Intent intent = new Intent(LoginActivity.this,ONEActivity.class);
                    startActivity(intent);
          }else{
    
         Intent intent = new Intent(LoginActivity.this,TWOActivity.class);
                    startActivity(intent);
          }
    

    按位置

                if(position == 1)
                    Intent intent = new Intent(LoginActivity.this,ONEActivity.class);
                    startActivity(intent);
                }else{
           Intent intent = new Intent(LoginActivity.this,TWOActivity.class);
                    startActivity(intent);
         }
    
            }
    
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                // TODO Auto-generated method stub
    
            }
        });
    

    【讨论】:

      【解决方案4】:

      试试这个:

      String chosenValue = sp2.getSelectedItem().toString();
      
      if(chosenValue.equals("Grado en Historia"){
          Intent intent = new Intent(this, AnotherClass.class);
          startActivity(intent);
      }
      else if...
      

      你可以比较不同的值

      【讨论】:

        【解决方案5】:

        根据微调器选择创建一个创建适当意图的私有方法。

        替换:

        Intent intent = new Intent(context, DegreeActivity.class);

        Intent intent = createActivityIntent(spinner.getSelectedItemPosition());

        private Intent createActivityIntent(int position) { switch(position) { case 1 : return new Intent(LoginActivity.this, HomeActivity.class); case 2 : return new Intent(LoginActivity.this, AnotherActivity.class); default : return new Intent(LoginActivity.this, HomeActivity.class); }

        【讨论】:

          【解决方案6】:

          只需从微调器中获取文本:

          Spinner spinner = (Spinner)findViewById(R.id.spinner);
          String text = spinner.getSelectedItem().toString();
          

          点击接受按钮检查条件,如:

          acceptbutton.setOnClickListener(new OnClickListener() {
                  @Override
                  public void onClick(View arg0) {
          
          if(text.equals("selectedItem")){
              // do some thing
                  Intent intent = new Intent(context, DegreeActivity.class);
                  startActivity(intent);
              }
              else{
              // do some thing
                 Intent intent = new Intent(context, NextActivity.class);
                  startActivity(intent);
              }
          
                   overridePendingTransition(R.anim.slide_in, R.anim.slide_out);
                  }
              });
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-04-24
            • 1970-01-01
            • 2018-02-26
            • 1970-01-01
            • 1970-01-01
            • 2016-12-20
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多