2016-10-20 71 views
-1

我在android中遇到问题并且出现问题 上面的错误显示了我尝试从登录按钮登录活动时打开主要活动。android.content.Context.getPackageName()'null对象引用

当按下登录按钮突然应用程式停止和下面的错误被表示

以下错误是表示机器人监视器

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

他在MainAcitivty类中有一些像'Intent intent = new Intent(this,Some.class)'这样的字段。 ..''表示字段初始值设定项 – Selvin

0

我,我试图用与意外没有基本上下文的应用程序。

,所以我不得不在我的应用程序重写:

@Override 
    protected void attachBaseContext(Context newBase) { 
} 

//instead of calling its super: 

@Override 
    protected void attachBaseContext(Context newBase) { 
     super.attachBaseContext(newBase);} 
相关问题