이 경우 "프로그램이 예기치 않게 중지되었습니다"를 일으키는 코드에 어떤 문제가 있습니까?

환상적인 하늘

여기서는 XML과 JAVA 모두에서 Spinner를 사용하는 연습을하려고합니다. 구체적으로는 차, 스타일, 풍미, 토핑에 대한 토스트를 선택한 프로그램을 만들었습니다. 이 단계를 진행하기 전에이 프로그램의 다른 간단한 버전을 확인했습니다. 그 시점에서 모든 것이 원활하게 실행되었습니다. 그러나 그것은 너무 혼란 스럽습니다. 사실, 나는 무엇이 잘못되었는지 알아낼만큼 충분히 경험이 없습니다. 초보자를 도와주세요. 코드가 조금 길어질 수 있습니다. 매우 감사합니다.

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


}
웨이브
private String message = getString(R.string.message);

리소스에 너무 일찍 액세스하고 있습니다. 활동 생성시에는 자원에 액세스 할 수 없습니다 (예 : 멤버 변수 초기화시). onCreate()활동 수명주기 까지 기다려야 합니다. getString()거기로 이동하십시오 .

일반적으로 무엇이 잘못되었는지 알아 보려면 logcat의 예외 스택 추적을 참조하십시오. 질문에도 포함 시키십시오. 불행히도 MyApp이 중지되었습니다를 참조하십시오 . 어떻게 해결할 수 있습니까?

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관