2015-06-20 49 views
-1

這裏我正在嘗試在XML和JAVA中使用Spinner。特別是,我製作了一個關於茶,風格,flava,頂級選擇的Toast的程序。在此步驟進行之前,我確實檢查了另一個更簡單的程序版本,此時所有內容都順利運行。但是,它很混亂。事實上,我沒有足夠的經驗去發現哪裏出了問題。請幫助一個新手,代碼可能會有點長,我會非常,非常感激在這種情況下我的代碼有什麼問題導致「程序意外停止」?

package com.example.second_spinner; 

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.ArrayAdapter; 
import android.widget.Spinner; 
import android.widget.Toast; 

public class Second_Spinner extends Activity { 
    private String tea_message = ""; 
    private String style_message = ""; 
    private String flava_message = ""; 
    private String moreLove_message = ""; 
    private String message = getString(R.string.message); 
    private int maximum_flava = 4; 
    private ArrayList<String> alreadyFlava = new ArrayList<String>(); 
    private ArrayList<String> alreadyLove = new ArrayList<String>(); 


    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState);; 
     setContentView(R.layout.activity_second__spinner); 

     Spinner spinner1 = (Spinner) findViewById(R.id.spinner1); 
     Spinner spinner2 = (Spinner) findViewById(R.id.spinner2); 

     spinner1.setOnItemSelectedListener(new MilkTea()); 
     spinner2.setOnItemSelectedListener(new MilkTea()); 

     Spinner spinner3 = (Spinner) findViewById(R.id.spinner3); 
     Spinner spinner4 = (Spinner) findViewById(R.id.spinner4); 

     List<String> flava = getFlava(); 
     ArrayAdapter<String> spinnerAdapter1 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,flava); 
     spinnerAdapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner3.setAdapter(spinnerAdapter1); 
     spinner3.setOnItemSelectedListener(new MilkTea()); 

     List<String> moreLove = getMoreLove(); 
     ArrayAdapter<String> spinnerAdapter2 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,moreLove); 
     spinnerAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner4.setAdapter(spinnerAdapter2); 
     spinner4.setOnItemSelectedListener(new MilkTea()); 
    } 



    private class MilkTea implements OnItemSelectedListener { 
     private boolean isFirst; 

     public void onItemSelected(AdapterView<?> spinner, View selectedView, int selectedIndex, long id) { 
      if (isFirst == false) { 
       isFirst = true; 
      } 
      else { 
       switch (selectedView.getId()) { 

        case (R.id.spinner1) : 
         tea_message = spinner.getItemAtPosition(selectedIndex).toString(); 
         break; 

        case (R.id.spinner2) : 
         style_message = spinner.getItemAtPosition(selectedIndex).toString(); 
         break; 

        case (R.id.spinner3) : 
         if (maximum_flava > 0) { 
          if (alreadyFlava.isEmpty()) { 
           flava_message = spinner.getItemAtPosition(selectedIndex).toString(); 
           alreadyFlava.add(flava_message); 
           maximum_flava--; 
          } 
          else { 
           boolean sign = true; 
           String temp = spinner.getItemAtPosition(selectedIndex).toString(); 
           for (int i = 0; i < alreadyFlava.size(); i++) 
            if (temp.equals(alreadyFlava.get(i))) { 
             sign = false; 
             break; 
            } 
           if (sign == true) { 
            flava_message += ","+temp; 
            alreadyFlava.add(flava_message); 
            maximum_flava--; 
           } 
          } 
         } 
         break; 

        case (R.id.spinner4) : 
         if (alreadyLove.isEmpty()) { 
          moreLove_message = spinner.getItemAtPosition(selectedIndex).toString(); 
          alreadyFlava.add(flava_message); 
         } 
         else { 
          boolean sign = true; 
          String temp = spinner.getItemAtPosition(selectedIndex).toString(); 
          for (int i = 0; i < alreadyLove.size(); i++) 
           if (temp.equals(alreadyLove.get(i))) { 
            sign = false; 
            break; 
           } 
          if (sign == true) { 
           moreLove_message += ","+temp; 
           alreadyLove.add(moreLove_message); 
          } 
         } 
         break; 
       } 
       message = String.format(message, tea_message, style_message, flava_message, moreLove_message); 
       Toast.makeText(getBaseContext(), message, Toast.LENGTH_SHORT).show(); 
      } 
     } 

     public void onNothingSelected(AdapterView<?> spinner) { 

     } 
    } 



    private List<String> getFlava() { 
     String[] flava = { 
       "No, I'm good", "Honeydew", "Blood Orange", "Red Guava", "Kumquat", "Lychee", "Longan", "Blackberry", 
       "Pineapple", "Mango", "Passion Fruit", "Taro", "Strawberry", "Coconut" 
     }; 
     List<String> flava_list = Arrays.asList(flava); 
     return flava_list; 
    } 



    private List<String> getMoreLove() { 
     String[] moreLove = { 
       "Not Today","Aloe Vera","Black Pearls", "Coffee Jelly","White Pearls","Grass Jelly","Passion Jelly", 
       "Coconut Jelly","Lychee Jelly","Strawberry Jelly","Manga Jelly","Manga Stars" 
     }; 
     List<String> moreLove_list = Arrays.asList(moreLove); 
     return moreLove_list; 
    } 


} 
+1

向我們展示了 'logcat的' –

回答

1
private String message = getString(R.string.message); 

你太早訪問資源。您不能在活動施工時間訪問資源,例如當初始化成員變量時。您需要等到活動生命週期中的onCreate()。在那裏移動getString()

一般來說,學什麼地方出了錯,看到logcat的異常堆棧跟蹤。也包括在你的問題中。見Unfortunately MyApp has stopped. How can I solve this?

相關問題