1

SQLite 経由でデータベースからデータを取得しています。データをデータベースに記録し、Listview を使用してデータを 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]  

これがJavaコードです。

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>
4

2 に答える 2

2

あなたが使用している:

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

ただし、XML ファイルのどこにも、これらの ID を持つ 2 つの Spinner はありません。setContentView()実際、 XML ファイルを使用するために呼び出すことさえありません。

このため、yilayは null になり、メソッドNullPointerExceptionでそれらを使用しようとすると になります。getiren()

これを修正するには、スピナーをレイアウトに追加し、setContentView()使用する前に を呼び出しますfindViewById()。また、次の ID を持つ ListView を追加する必要があります。

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

がカスタム カスタム レイアウトでListActivityを見つけることができるようにします。ListView

<YourBaseLayout>
    <ListView
        android:id="@android:id/list" />
    <TextView />
    <firstSpinner />
    <secondSpinner />
</YourBaseLayout>
于 2012-12-21T11:01:27.523 に答える
0

この問題は、行を書き忘れているために発生しますsetContentView();

解決:-

onCreate() メソッドのこの行の前後にこのsetContentView(R.layout.activity_main)行を書くと、問題が解決します。super.onCreate(savedInstanceState);yil=(Spinner)findViewById(R.id.spinnerYillar);

于 2012-12-21T11:34:01.663 に答える