NullPointerException Android - PullRequest
       19

NullPointerException Android

0 голосов
/ 09 октября 2011

При запуске приложения я получаю эти ошибки

10-09 10: 20: 57.138: ОШИБКА / AndroidRuntime (282): java.lang.RuntimeException: невозможно запустить действие ComponentInfo {com.rika / com.rika.LatihanActivity}: java.lang.NullPointerException

10-09 10: 20: 57.138: ОШИБКА / AndroidRuntime (282): вызвано: java.lang.NullPointerException

Пожалуйста, помогите мне решить эту проблему.

Это класс активности

public class LatihanActivity extends Activity{
    private RadioButton radioButton;
    private TextView quizQuestion;  

    private int rowIndex = 1;
    private int questNo=0;
    private boolean checked=false;
    private boolean flag=true;

    private RadioGroup radioGroup;

    String[] corrAns = new String[5];

    final DatabaseHelper db = new DatabaseHelper(this);

    Cursor c1;
    Cursor c2;
    Cursor c3;

    int counter=1;
    String label;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        String options[] = new String[19];

        final RadioGroup radiogroup = (RadioGroup) findViewById(R.id.rdbGp1);

         // layout params to use when adding each radio button
         LinearLayout.LayoutParams layoutParams = new RadioGroup.LayoutParams(
                    RadioGroup.LayoutParams.WRAP_CONTENT,
                    RadioGroup.LayoutParams.WRAP_CONTENT);

        try {
            db.createDataBase();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        quizQuestion = (TextView) findViewById(R.id.TextView01);

        displayQuestion();

        /*Displays the next options and sets listener on next button*/
        Button btnNext = (Button) findViewById(R.id.btnNext);
        btnNext.setOnClickListener(btnNext_Listener);

        /*Saves the selected values in the database on the save button*/
        Button btnSave = (Button) findViewById(R.id.btnSave);
        btnSave.setOnClickListener(btnSave_Listener);   

        c3 = db.getCorrAns();

        for (int i=0;i<=4;i++) {
            corrAns[i]=c3.getString(0);
            c3.moveToNext();
        }

        radioGroup = (RadioGroup) findViewById(R.id.rdbGp1);

        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                // TODO Auto-generated method stub
                for(int i=0; i<radiogroup.getChildCount() ; i++) {
                    RadioButton btn = (RadioButton) radioGroup.getChildAt(i);                     
                    String text;

                    if (btn.isPressed() && btn.isChecked() && questNo < 5) {
                        Log.e("corrAns[questNo]",corrAns[questNo]);
                        if (corrAns[questNo].equals(btn.getText()) && flag==true) {
                            flag=false;
                            checked = true; 
                        } else if(checked==true) {
                            flag=true;
                            checked = false;
                        }
                    }
                }   
            }
        });        
    }

    /*Called when next button is clicked*/
    private View.OnClickListener btnNext_Listener= new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            flag=true;
            checked = false;
            questNo++;

            if (questNo < 5) {
                c1.moveToNext();
                displayQuestion();
            }
        }

    };

    private View.OnClickListener btnSave_Listener= new View.OnClickListener() {
        @Override
        public void onClick(View v) {}
    };


    private void displayQuestion()  {
        //Fetching data quiz data and incrementing on each click

        c1=db.getQuiz_Content(rowIndex);

        c2 =db.getAns(rowIndex++);

        quizQuestion.setText(c1.getString(0));

        radioGroup.removeAllViews();
        for (int i=0;i<=3;i++) {
            //Generating and adding 4 radio buttons dynamically 
            radioButton = new RadioButton(this);
            radioButton.setText(c2.getString(0));
            radioButton.setId(i);
            c2.moveToNext();
            radioGroup.addView(radioButton);
        }

    }
}

Все эти проблемы возникали при запуске приложения

10-09 11: 13: 15.128: ОШИБКА / HierarchicalStateMachine (68): TetherMaster - необработанное сообщение: msg.what = 3

10-09 11: 13: 56.556: ОШИБКА / AndroidRuntime (282): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: main

10-09 11: 13: 56.556: ОШИБКА / AndroidRuntime (282): java.lang.RuntimeException: невозможно запустить действие ComponentInfo {com.rika / com.rika.LatihanActivity}: java.lang.NullPointerException

10-09 11: 13: 56.556: ОШИБКА / AndroidRuntime (282): в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2663)

10-09 11: 13: 56.556: ОШИБКА / AndroidRuntime (282): в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2679)

10-09 11: 13: 56.556: ОШИБКА / AndroidRuntime (282): на android.app.ActivityThread.access $ 2300 (ActivityThread.java:125)

10-09 11: 13: 56.556: ОШИБКА / AndroidRuntime (282): на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:2033)

10-09 11: 13: 56.556: ОШИБКА / AndroidRuntime (282): на android.os.Handler.dispatchMessage (Handler.java:99)

10-09 11: 13: 56.556: ОШИБКА / AndroidRuntime (282): на android.os.Looper.loop (Looper.java:123)

10-09 11: 13: 56.556: ОШИБКА / AndroidRuntime (282): в android.app.ActivityThread.main (ActivityThread.java:4627)

10-09 11: 13: 56.556: ОШИБКА / AndroidRuntime (282): на java.lang.reflect.Method.invokeNative (собственный метод)

10-09 11: 13: 56.556: ОШИБКА / AndroidRuntime (282): в java.lang.reflect.Method.invoke (Method.java:521)

10-09 11: 13: 56.556: ОШИБКА / AndroidRuntime (282): на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:868)

10-09 11: 13: 56.556: ОШИБКА / AndroidRuntime (282): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:626)

10-09 11: 13: 56.556: ОШИБКА / AndroidRuntime (282): в dalvik.system.NativeStart.main (собственный метод)

10-09 11: 13: 56.556: ОШИБКА / AndroidRuntime (282): вызвано: java.lang.NullPointerException

10-09 11: 13: 56.556: ОШИБКА / AndroidRuntime (282): на com.rika.LatihanActivity.displayQuestion (LatihanActivity.java:198)

10-09 11: 13: 56.556: ОШИБКА / AndroidRuntime (282): на com.rika.LatihanActivity.onCreate (LatihanActivity.java:69)

10-09 11: 13: 56.556: ОШИБКА / AndroidRuntime (282): в android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047)

10-09 11: 13: 56.556: ОШИБКА / AndroidRuntime (282): в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2627)

10-09 11: 13: 56.556: ОШИБКА / AndroidRuntime (282): ... еще 11

Ответы [ 2 ]

0 голосов
/ 09 октября 2011

Я думаю, что вы создаете базу данных, но вы должны открыть ее после создания базы данных.

public void opendatabase() throws SQLException
{
    //Open the database
    String mypath = DB_PATH + DB_NAME;
    myDataBase = SQLiteDatabase.openDatabase(mypath, null, SQLiteDatabase.OPEN_READONLY);

}

Ну, я просто догадываюсь.если вы покажете свой класс базы данных, это будет более полезным.Или вы можете посетить http://androidlearningbegin.blogspot.com/2011/10/android-application-to-connect-to-your.html, если используете внешнюю базу данных sqlite.

0 голосов
/ 09 октября 2011

Возможность 1: Вы должны объявить свою Активность в файле манифеста,

, если вы уже сделали это, и она все еще не работает, вы должны объявить ее с именемпакет, если ваша деятельность находится в другом пакете:

<application ...>
<activity android:name="YouPackageName.YourActivity" /> // it should be on the <application> tag
</application>

и, наконец, Clean и RE выполнят ваш проект.

Возможность 2:

убедитесь, что ваша RadioButtonGroup определена в вашем макете main.xml, если это так, убедитесь, что вы не импортировали android.R;Вы должны использовать import YourPackage.R;

и, наконец, очистить и перестроить ваш проект.

Примечание: вы не дали полную трассировку стека вашего NullPointerException, поэтому мы можем 't определить, какая именно проблема в вашем коде,

...