2013-07-16 2 views
0

그래서 내 그룹은 건물을 안내하는 데 도움이되는 간단한 Android 프로그램을 만들려고합니다. 우리는 Spinner 내부에서 검색 결과를 표시하려고 시도하지만, 불행히도 회 전자가 초기화 될 때마다 프로그램이 중단됩니다. 우리는 코드가 Spinner의 초기화까지 작동한다는 것을 알고 있습니다. 누구든지 문제를 진단하는 데 도움을 줄 수 있습니까?회 전자를 구현하면 프로그램이 다운되고

관련 기능 코드 :이 로그 캣에서 이러한 오류를 제공

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    //Here goes the code for the searching of the building in the database file. 

    // Get the message from the intent 
    Intent intent = getIntent(); 
    String building = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); 
    String message = "Search results for \"" + building + "\""; 

    // Create the text view 
    TextView textView = new TextView(this); 
    textView.setTextSize(30); 
    textView.setText(message); 

    InputStream buildinginfo = null; 
    try { 
     buildinginfo = getResources().getAssets().open("namelist.txt"); 
    } catch (IOException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 
    BufferedReader myDIS = new BufferedReader(new InputStreamReader(buildinginfo)); 

    //you've now got an instance of BufferedReader called myDIS 

    ArrayList<String> list = new ArrayList<String>(); 
    int x = -1; 
    String conglomerate = ""; 

    for(int i=0;i<101;i++){ 
    try { 
     String something = myDIS.readLine(); 
     x = something.indexOf(building); 
     if(x>-1){ 
      list.add(something); 
     } 
    } catch (IOException e1) { 
     //TODO Auto-generated catch block 
     e1.printStackTrace(); 

    } 
      } 


    for(int i=0 ; i < (list.size()-1) ; i++) { 
     String display = list.get(i).substring(5); 
     conglomerate = conglomerate+display+"\n"; 
    } 
    setContentView(textView); 
    //Add Spinner 
    Spinner spinner = (Spinner) findViewById(R.id.spinner1); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, list); 
    spinner.setAdapter(adapter); 
} 

.

07-16 00:19:47.951: E/AndroidRuntime(273): FATAL EXCEPTION: main 

07-16 00:19:47.951: E/AndroidRuntime(273): java.lang.RuntimeException: Unable to start activity ComponentInfo{iefx.testing.myapp/iefx.testing.myapp.DisplayMessageActivity}: java.lang.NullPointerException 

07-16 00:19:47.951: E/AndroidRuntime(273): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 

07-16 00:19:47.951: E/AndroidRuntime(273): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 

07-16 00:19:47.951: E/AndroidRuntime(273): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 

07-16 00:19:47.951: E/AndroidRuntime(273): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 

07-16 00:19:47.951: E/AndroidRuntime(273): at android.os.Handler.dispatchMessage(Handler.java:99) 

07-16 00:19:47.951: E/AndroidRuntime(273): at android.os.Looper.loop(Looper.java:123) 

07-16 00:19:47.951: E/AndroidRuntime(273): at android.app.ActivityThread.main(ActivityThread.java:4627) 

07-16 00:19:47.951: E/AndroidRuntime(273): at java.lang.reflect.Method.invokeNative(Native Method) 

07-16 00:19:47.951: E/AndroidRuntime(273): at java.lang.reflect.Method.invoke(Method.java:521) 

07-16 00:19:47.951: E/AndroidRuntime(273): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 

07-16 00:19:47.951: E/AndroidRuntime(273): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 

07-16 00:19:47.951: E/AndroidRuntime(273): at dalvik.system.NativeStart.main(Native Method) 

07-16 00:19:47.951: E/AndroidRuntime(273): Caused by: java.lang.NullPointerException 

07-16 00:19:47.951: E/AndroidRuntime(273): at iefx.testing.myapp.DisplayMessageActivity.onCreate(DisplayMessageActivity.java:83) 

07-16 00:19:47.951: E/AndroidRuntime(273): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 

07-16 00:19:47.951: E/AndroidRuntime(273): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 

07-16 00:19:47.951: E/AndroidRuntime(273): ... 11 more 
+1

'DisplayMessageActivity'의 83 행은 무엇입니까? 해당 행의 일부 객체가 null이고 멤버 변수 나 메서드에 액세스하려고합니다. – Karakuri

+0

spinner1을 보유하고있는보기를 팽창시키지 않았습니다. 어떤 레이아웃 파일을 참조하고 있습니까? – nedaRM

+0

@ Karakuri "spinner.setAdapter (adapter);"입니다. – pjwasz

답변

0

setContentView()을 호출하고 TextView를 전달합니다. 대신 (레이아웃 R.layout.something 양식 대신) 레이아웃 참조를 전달해야합니다. 그렇지 않으면 회 전자 ID가있는 findViewById()를 호출하면 null이 반환되므로 해당 줄에 NullPointerException이 표시됩니다.

+0

고맙습니다! 이제 알겠습니다. 그것은 내가 끝날 때까지 언급하지 않을 몇 가지 다른 버그를 고치는 데 도움이되었습니다! :) – pjwasz

0

(Spinner)를 호출하기 전에 setContentView (layoutid) (레이아웃 ID에 정의 된 스피너가 있어야 함) findViewById (R.id.spinner1); 회 전자가 null이 될 때까지 응용 프로그램이 충돌합니다.

0

spinner1이라는 ID를 가진 회 전자보기를 컨테이너 (LinearLayout, RelativeLayout, 등 ...) 안에 넣고 코드에 넣은 xml 호출 "my_xml_with_spinner.xml"을 선언하십시오. 변화 : 당신은 findViewById를 호출하고 지금처럼 회가 null되지 않습니다 때

setContentView(textView) 

setContentView(R.layout.my_xml_with_spinner) 

에 대한이 이제 스피너보기가 발견됩니다.

null 인 이유는 레이아웃으로 간단한 TextView를 설정했기 때문이며 코드는 spinner1이라는 ID를 가진 사용자가 설정 한 레이아웃 (textView)에서 어떤보기도 찾을 수 없기 때문입니다.

+0

답변 주셔서 감사합니다! 이것은 또한 코드의 다른 부분에 도움이되었습니다. – pjwasz

+0

투표를 누른 다음;) – jpardogo

관련 문제