2016-10-20 2 views
-1

Я начинаю работать в android и имею проблемы Выше ошибки, пока я пытаюсь открыть основное действие с помощью кнопки входа в систему входа.android.content.Context.getPackageName() 'на ссылке нулевого объекта

при нажатии на кнопку Войти вдруг приложение останавливается и после ошибки показывает

следующее сообщение об ошибке показывается в андроида мониторе

10-20 18:47:23.314 13432-13432/com.antherx.prasenjit.ihdfbachatgat E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.antherx.prasenjit.ihdfbachatgat, PID: 13432 
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.antherx.prasenjit.ihdfbachatgat/com.antherx.prasenjit.ihdfbachatgat.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:2460) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2629) 
    at android.app.ActivityThread.access$800(ActivityThread.java:182) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1474) 
    at android.os.Handler.dispatchMessage(Handler.java:111) 
    at android.os.Looper.loop(Looper.java:194) 
    at android.app.ActivityThread.main(ActivityThread.java:5706) 
    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:1033) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:828) 
    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:132) 
    at android.content.ComponentName.<init>(ComponentName.java:77) 
    at android.content.Intent.<init>(Intent.java:4358) 
    at com.antherx.prasenjit.ihdfbachatgat.MainActivity.<init>(MainActivity.java:26) 
    at java.lang.reflect.Constructor.newInstance(Native Method) 
    at java.lang.Class.newInstance(Class.java:1606) 
    at android.app.Instrumentation.newActivity(Instrumentation.java:1071) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2437) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2629) 
    at android.app.ActivityThread.access$800(ActivityThread.java:182) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1474) 
    at android.os.Handler.dispatchMessage(Handler.java:111) 
    at android.os.Looper.loop(Looper.java:194) 
    at android.app.ActivityThread.main(ActivityThread.java:5706) 
    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:1033) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:828) 

это Войти код действия является их любая проблема в этом коде

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 
    //Please do not 

    Email = (EditText)findViewById(R.id.email); 
    Password = (EditText)findViewById(R.id.password); 
    String wel_on_login = "Welcome On IHDF Bachat Gat app"; 
    Toast welcome = Toast.makeText(getApplicationContext(),wel_on_login,Toast.LENGTH_LONG); 
    welcome.show(); 

    final Button signIn = (Button)findViewById(R.id.email_sign_in_button); 
    final Button register = (Button)findViewById(R.id.registration) ; 
    final Intent main_trans = new Intent(this, MainActivity.class); 
    final Intent reg_trans = new Intent(this, register.class); 

    signIn.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View view) { 

      startActivity(main_trans); 
     } 
    }); 

    register.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      startActivity(reg_trans); 
     } 
    }); 

Это код их основной деятельности.

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    toolbar = (Toolbar)findViewById(R.id.home_toolbar); 
    setSupportActionBar(toolbar); 
    newMember = (MenuItem)findViewById(R.id.new_member); 
    newProfile = (MenuItem)findViewById(R.id.profile) ; 

    Drawer =(DrawerLayout)findViewById(R.id.drawerLayout); 
    sToggle = new ActionBarDrawerToggle(this,Drawer,R.string.open,R.string.close); 


    Grp_ico = (ImageView)findViewById(R.id.grp_ico); 

    Drawer.addDrawerListener(sToggle); 
    sToggle.syncState(); 

    getSupportActionBar(); 


    String wel_on_main = "You are successfully on Main Home"; 
    Toast welcome = Toast.makeText(getApplicationContext(),wel_on_main,Toast.LENGTH_LONG); 
    welcome.show(); 




} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    switch (item.getItemId()){ 

     case R.id.new_member : 
      startActivity(new_new_member); 
     case R.id.profile : 
      startActivity(new_new_profile); 
     case R.id.setting : 
      startActivity(new_new_setting); 
     case R.id.meeting : 
      startActivity(new_new_meeting); 
      default: 
       return super.onOptionsItemSelected(item); 


    } 

} 
+1

еще один преждевременному использование контекста ... Очевидно, вы не можете использовать контекст в поле инициализаторах – Selvin

+0

Вставить весь код из MainActivity.class, или то, что находится в 26 строке? – walkmn

ответ

-1

Измените ваш getApplicationContext() от

Toast welcome = Toast.makeText(getApplicationContext(),wel_on_main,Toast.LENGTH_LONG);

либо getBaseContext() или предпочтительно this

+0

'... MainActivity. (MainActivity.java:26) 'очевидно, это не проблема – Selvin

+0

@Selvin Я вижу, спасибо за руководство мне –

+0

У него есть поле, вроде' Intent intent = new Intent (this, Some.class); 'в классе MainAcitivty. .. '' означает инициализатор поля – Selvin

0

для меня я пытался использовать приложение без базового контекста случайно.

так я был в моей заявке переопределение:

@Override 
    protected void attachBaseContext(Context newBase) { 
} 

//instead of calling its super: 

@Override 
    protected void attachBaseContext(Context newBase) { 
     super.attachBaseContext(newBase);} 
Смежные вопросы