ОШИБКА / AndroidRuntime (775): java.lang.RuntimeException: не удается запустить действие ComponentInfo {..}: java.lang.NullPointerException - PullRequest
0 голосов
/ 13 ноября 2011

Этот вопрос может выглядеть как повторяющийся.Но эти вопросы не помогли мне решить мою проблему.

Я хотел бы реализовать событие "onClick" в списке (имен детей), который заполняется с помощью SimpleCursorAdapter.Всякий раз, когда пользователь нажимает на имя, генерируется тост с указанием «id» записи в базе данных.

Вот мой код -

public class CommonNames extends Activity {

TextView rowview;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.common_names);

    rowview = (TextView)findViewById(R.id.commonName);

    CommonNamesAdapter cnTable = new CommonNamesAdapter(this);
    ListView cnListView = (ListView)findViewById(R.id.common_name_layout);

    cnTable.open(getApplicationContext());
    Cursor c = cnTable.fetch_all_common_names_only();
    startManagingCursor(c);

    if(c!=null){
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
                R.layout.listview,
                c,
                new String[] {c.getColumnName(0), c.getColumnName(1)},

                new int[] {R.id.rowLayout,R.id.commonName});

                cnListView.setAdapter(adapter);

        }


    rowview.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

            Context context = getApplicationContext();

            String id = context.getString(R.id.commonName);
            CharSequence text = "This id of this item is... "+id ;
            int duration = Toast.LENGTH_SHORT;

            Toast toast = Toast.makeText(context, text, duration);
            toast.show();

        }


    });
    cnTable.close();
}

Вот список.xml

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rowLayout"
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
>
<TextView 
    android:id="@+id/commonName"
    android:layout_alignParentLeft="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="16dp"
    android:paddingLeft="14dp"
    android:paddingTop="4dp"
    android:paddingBottom="4dp"
/>

</LinearLayout>

Вот общие_имя.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ListView 
    android:id = "@+id/common_name_layout"
    android:layout_width="fill_parent"
    android:layout_height= "wrap_content" >
</ListView>
</LinearLayout>

Когда я запускаю свое приложение, я получаю исключение времени выполнения NullPointerException.Вот LogCat.Пожалуйста, помогите мне исправить это.

11-13 18:23:27.852: INFO/COMMON_NAMES_TABLE(775): Inserting record...
11-13 18:23:27.902: INFO/COMMON_NAMES_TABLE(775): OPening DataBase Connection....
11-13 18:23:28.002: DEBUG/AndroidRuntime(775): Shutting down VM
11-13 18:23:28.002: WARN/dalvikvm(775): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
11-13 18:23:28.012: ERROR/AndroidRuntime(775): FATAL EXCEPTION: main
11-13 18:23:28.012: ERROR/AndroidRuntime(775): java.lang.RuntimeException: Unable to start activity ComponentInfo{balu.android/balu.android.CommonNames}: java.lang.NullPointerException
11-13 18:23:28.012: ERROR/AndroidRuntime(775):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
11-13 18:23:28.012: ERROR/AndroidRuntime(775):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-13 18:23:28.012: ERROR/AndroidRuntime(775):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-13 18:23:28.012: ERROR/AndroidRuntime(775):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-13 18:23:28.012: ERROR/AndroidRuntime(775):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-13 18:23:28.012: ERROR/AndroidRuntime(775):     at android.os.Looper.loop(Looper.java:123)
11-13 18:23:28.012: ERROR/AndroidRuntime(775):     at android.app.ActivityThread.main(ActivityThread.java:4627)
11-13 18:23:28.012: ERROR/AndroidRuntime(775):     at java.lang.reflect.Method.invokeNative(Native Method)
11-13 18:23:28.012: ERROR/AndroidRuntime(775):     at java.lang.reflect.Method.invoke(Method.java:521)
11-13 18:23:28.012: ERROR/AndroidRuntime(775):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-13 18:23:28.012: ERROR/AndroidRuntime(775):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-13 18:23:28.012: ERROR/AndroidRuntime(775):     at dalvik.system.NativeStart.main(Native Method)
11-13 18:23:28.012: ERROR/AndroidRuntime(775): Caused by: java.lang.NullPointerException
11-13 18:23:28.012: ERROR/AndroidRuntime(775):     at balu.android.CommonNames.onCreate(CommonNames.java:42)
11-13 18:23:28.012: ERROR/AndroidRuntime(775):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-13 18:23:28.012: ERROR/AndroidRuntime(775):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
11-13 18:23:28.012: ERROR/AndroidRuntime(775):     ... 11 more
11-13 18:23:28.032: WARN/ActivityManager(59):   Force finishing activity balu.android/.CommonNames
11-13 18:23:28.032: WARN/ActivityManager(59):   Force finishing activity balu.android/.Select
11-13 18:23:28.585: WARN/ActivityManager(59): Activity pause timeout for HistoryRecord{45025710 balu.android/.CommonNames}
11-13 18:23:31.192: INFO/Process(775): Sending signal. PID: 775 SIG: 9
11-13 18:23:31.212: INFO/ActivityManager(59): Process balu.android (pid 775) has died.
11-13 18:23:31.212: INFO/WindowManager(59): WIN DEATH: Window{45084738 balu.android/balu.android.BabyNamesAppActivity paused=false}

Спасибо.

Ответы [ 2 ]

2 голосов
/ 13 ноября 2011

Вы не должны устанавливать onClickListener в представлении строки.Это только устанавливает событие onClick в одну строку, и если нет содержимого, оно вылетает (что, вероятно, ваша проблема)

0 голосов
/ 08 февраля 2012

Ваш макет общих имен не имеет представления с идентификатором commonName, поэтому rowview равно нулю и roview.setOnClickListener() будет NPE.

На самом деле по сообщению об ошибке

...(775): Caused by: java.lang.NullPointerException
...(775):     at balu.android.CommonNames.onCreate(CommonNames.java:42)

в трассировке стека, которую вы вставили, это легко определить, поскольку NPE находится в строке CommonNames.java 42

...