2015-03-02 4 views
0

Итак, у меня есть два действия, и я пытаюсь открыть активность. Вставить на кнопку. Но это дает сообщение К сожалению активность прекратилась неожиданно или что-то ..Android Null object Reference

Часть кода от основной деятельности, где кнопка вызова Намерение:

//The intent typed earlier in the activity 
Intent myIntent = new Intent(MainActivity.this, Insert.class); 

private OnClickListener onClick() { 
    return new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      switch (v.getId()) { 
       case R.id.addcolumnbutton: 
        if(value==k||value==10) 
        { 
         Toast.makeText(getApplicationContext(), "Maximum number of Columns created", 
           Toast.LENGTH_SHORT).show(); 
        } 
        else { 
         k++; 
         mLayout.addView(createNewLayout()); 
        } 
        break; 
       case R.id.createtablebutton: 
        if(value==k) { 

         MainActivity.this.startActivity(myIntent); 

        } 
        else 
        { 
         Toast.makeText(getApplicationContext(), "Incorrect number of Columns created", 
           Toast.LENGTH_SHORT).show(); 

        } 
        break; 
      } 
     } 


    }; 
} 

Мой LogCat здесь:

03-02 17:21:34.342 12789-12789/com.cambiopune.tosdatabase D/AndroidRuntime﹕  Shutting down VM 
    03-02 17:21:34.345 12789-12789/com.cambiopune.tosdatabase E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: com.cambiopune.tosdatabase, PID: 12789 
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.cambiopune.tosdatabase/com.cambiopune.tosdatabase.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
     at android.app.ActivityThread.access$800(ActivityThread.java:144) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:135) 
     at android.app.ActivityThread.main(ActivityThread.java:5221) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference 
      at android.content.ContextWrapper.getPackageName(ContextWrapper.java:131) 
     at android.content.ComponentName.<init>(ComponentName.java:77) 
     at android.content.Intent.<init>(Intent.java:3996) 
     at com.cambiopune.tosdatabase.MainActivity.<init>(MainActivity.java:34) 
     at java.lang.reflect.Constructor.newInstance(Native Method) 
     at java.lang.Class.newInstance(Class.java:1572) 
     at android.app.Instrumentation.newActivity(Instrumentation.java:1065) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2199) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 

+1

Как я понимаю ваш код, который вы должны удалить это: 'частное OnClickListener OnClick() { вернуть новый OnClickListener() {' – Psypher

+0

попытка вызвать виртуальный метод «Java .lang.String android.content.Context.getPackageName() 'на ссылке нулевого объекта на android.content.ContextWrapper.getPackageName (ContextWrapper.java:131) Я думаю, что ошибка находится где-то в другом месте –

+0

@ Ranjith Ill try это, я помечен ваш ответ правильно, если он работает. – MihirK98

ответ

1

Просто удалите эту строку в своем коде:

private OnClickListener onClick() { 
    return new OnClickListener() { 

Это должно быть просто:

@Override 
    public void onClick(View v) { 

     switch (v.getId()) { 
      case R.id.addcolumnbutton: 
       if(value==k||value==10) 
       { 
        Toast.makeText(getApplicationContext(), "Maximum number of Columns created", 
          Toast.LENGTH_SHORT).show(); 
       } 
       else { 
        k++; 
        mLayout.addView(createNewLayout()); 
       } 
       break; 
      case R.id.createtablebutton: 
       if(value==k) { 

        MainActivity.this.startActivity(myIntent); 

       } 
       else 
       { 
        Toast.makeText(getApplicationContext(), "Incorrect number of Columns created", 
          Toast.LENGTH_SHORT).show(); 

       } 
       break; 
     } 
    } 
+0

a d вы должны реализовать на прослушивателе кликов в действии –

+0

Или создать внутренний класс для слушателя. В любом случае вы должны реализовать его где-нибудь, прежде чем вы сможете переопределить 'onClick (View v)' –

+0

@Ranjith Ill попробуйте и вернитесь к вам – MihirK98

Смежные вопросы