2012-12-21 3 views
1

SQLite를 통해 데이터베이스에서 데이터를 가져 오는 중입니다. ı는 데이터를 데이터베이스에 기록하고 Listview ı에서는 XML로 데이터를 표시하려고합니다. 활동을 시작할 수는 없습니다. ı Listview를 처음 사용하고 있습니다. 도움을 주셔서 감사합니다.안드로이드 ListView performLaunchActivity 오류가 xml 레이아웃을 표시하지 않습니다

ActivityThread.performLaunchActivity(ActivityThread$ActivityClientRecord, Intent) line: 2180  
ActivityThread.handleLaunchActivity(ActivityThread$ActivityClientRecord, Intent) line: 2230 
ActivityThread.access$600(ActivityThread, ActivityThread$ActivityClientRecord, Intent) line: 141  
ActivityThread$H.handleMessage(Message) line: 1234 
ActivityThread$H(Handler).dispatchMessage(Message) line: 99 
Looper.loop() line: 137 
ActivityThread.main(String[]) line: 5039  
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method] 
Method.invoke(Object, Object...) line: 511 
ZygoteInit$MethodAndArgsCaller.run() line: 793 
ZygoteInit.main(String[]) line: 560 
NativeStart.main(String[]) line: not available [native method] 

여기는 자바 코드입니다.

public class ButceGetirenListView extends ListActivity { 

    Spinner yil,ay; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 

     yil=(Spinner)findViewById(R.id.spinnerYillar); 
     ay=(Spinner)findViewById(R.id.spinnerAylar); 

     String[] result=getiren(); 
     setListAdapter(new ArrayAdapter<String>(this, R.layout.butcegetir,result)); 

     ListView listV=getListView(); 
     listV.setOnItemClickListener(new OnItemClickListener() { 

      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 
        Toast.makeText(getApplicationContext(),((TextView)arg1).getText(), Toast.LENGTH_SHORT).show(); 

      } 


     }); 
    } 
    protected String[] getiren(){ 

     int yillar=Integer.valueOf(yil.getSelectedItem().toString()); 
     String aylar=ay.getSelectedItem().toString(); 
     TemporaryDatabase tdb=new TemporaryDatabase(this); 
     tdb.open(); 
     String[] result=new String[25]; 
     result = tdb.getDataHesapla(yillar,aylar); 
     tdb.close(); 
     return result; 
    } 

} 

및 XML 코드 :

<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/textViewListView" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="15dp"> 
</TextView> 
+0

제 대답과 의견을 참조하십시오. –

답변

2

사용중인 : 그러나

yil=(Spinner)findViewById(R.id.spinnerYillar); 
ay=(Spinner)findViewById(R.id.spinnerAylar); 

, 갑자기 당신의 XML 파일은 당신이 그 ID를 가진 두 스피너를해야합니까. 사실, setContentView()에 XML 파일을 사용하는 전화를 한 적이 없습니다. 이 때문에

, yilay가 null이며, 당신이 getiren() 방법을 사용하려고 할 때 NullPointerException가 발생합니다.

이 문제를 해결하려면 레이아웃에 회 전자를 추가하고 findViewById()을 사용하기 전에 setContentView()으로 전화하십시오. 또한 다음 ID로 ListView를 추가해야합니다 :

android:id="@android:id/list" 

는 그래서 ListActivity 사용자 정의 사용자 정의 레이아웃과 ListView를 찾을 수 있습니다.

<YourBaseLayout> 
    <ListView 
     android:id="@android:id/list" /> 
    <TextView /> 
    <firstSpinner /> 
    <secondSpinner /> 
</YourBaseLayout> 
+0

다른 파일이 있습니다. 스피너가 있습니다. 하지만 XML에서 ı 사용자 Listview는 어떻게됩니까? 여기에 쓸 수 있습니까? – hopeTo

+0

다른 파일이있을 수 있지만 활동의보기로 설정해야합니다. –

+0

예 ı보기로 설정합니다. 하지만이 XML이 아닙니다. 다른 xml.is에는이 차이점이나 다른 점이 있습니다. – hopeTo

0

이 문제는 당신이 setContentView(); 라인을 작성하는 잊었 때문에 발생합니다.

솔루션 : -

쓰기 setContentView(R.layout.activity_main)super.onCreate(savedInstanceState); 및 이전 yil=(Spinner)findViewById(R.id.spinnerYillar);에서 onCreate에서이 라인() 메소드는,이 문제를 해결할 후이 라인.

+0

쓴 적이 있지만 여전히 예외가 있습니다 – hopeTo

+0

@hopeTo listactivity를 확장하지 말고, 활동을 확장하고 XML 파일에서 listview를 정의한 다음 시도하십시오. –

+0

활동을 사용할 때 오류가 발생합니다. 때문에 setListAdapter – hopeTo

관련 문제