2017-08-11 98 views
0

在Android模拟器中运行我的应用程序的作品虽然,但它的Android设备上运行时崩溃。当我看到它崩溃,由于ActionBar.setTitle()但什么是错误?来自主要活动的代码,Logcat错误和Build Gradle已过帐。ActionBar.setTitle()运行在模拟器,但崩溃的设备?

package com.example.mher.citygo; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ImageView; 
import android.widget.ListView; 

import java.util.ArrayList; 

public class MainActivity extends AppCompatActivity { 

    String[] items; 
    private static final int REQUEST_CALL=1; 
    ArrayList<String> listItems; 
    ArrayAdapter<String> adapter; 
    ListView listView; 
    EditText editText; 
    Button bregister; 
    private Toolbar toolbar; 
    ImageView help; 

       protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
        toolbar=(Toolbar) findViewById(R.id.my_toolbar); 
        setSupportActionBar(toolbar); 
        getSupportActionBar().setTitle(null); 



       ArrayList<ItemData> list=new ArrayList<>(); 
       list.add(new ItemData("Eng",R.drawable.usaflag)); 
       list.add(new ItemData("Arm",R.drawable.armeniaflag)); 
       list.add(new ItemData("Ru",R.drawable.russiaflag)); 
       list.add(new ItemData("Per",R.drawable.iranflag)); 

       final Button SearchARid=(Button) findViewById(R.id.bSearchRide); 
       Button LoginDriver=(Button) findViewById(R.id.bLogin_As_A_Driver); 
       bregister=(Button) findViewById(R.id.bRegister); 
       help=(ImageView) findViewById(R.id.help); 

       help.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         Intent intent=new Intent(MainActivity.this,ActivityHelp.class); 
         start 

Activity(intent); 
        overridePendingTransition(R.anim.slide_in_up,R.anim.stay); 
       } 
      }); 




      bregister.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Intent SignUp=new Intent(MainActivity.this,RegisterActivity.class); 
        MainActivity.this.startActivity(SignUp); 

       } 
      }); 

      LoginDriver.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Intent DriverLogin=new Intent(MainActivity.this,LoginActivity.class); 
        MainActivity.this.startActivity(DriverLogin); 
       } 
      }); 

      SearchARid.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Intent SearchRide=new Intent(MainActivity.this, SearchRide.class); 
        MainActivity.this.startActivity(SearchRide); 
       } 
      }); 
     } 


     @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
      MenuInflater menuInflater=getMenuInflater(); 
      menuInflater.inflate(R.menu.main_menu,menu); 

      return super.onCreateOptionsMenu(menu); 
     } 

     @Override 
     public boolean onOptionsItemSelected(MenuItem item) { 
      int res_id=item.getItemId(); 
      if(res_id==R.id.actionSettings) 
      { 
       Intent intent=new Intent(MainActivity.this,SettingsActivity.class); 
       startActivity(intent); 
       overridePendingTransition(R.anim.right_to_left,R.anim.stay); 

      } 

      return super.onOptionsItemSelected(item); 
     } 


    } 

这里是我的摇篮(Mudule APP):

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.3" 
    defaultConfig { 
     applicationId "com.example.mher.citygo" 
     minSdkVersion 22 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 

    compile 'com.android.support:appcompat-v7:25.3.1' 
    compile 'com.android.support:design:25.3.1' 
    compile 'com.android.support.constraint:constraint-layout:1.0.2' 
    compile 'com.google.firebase:firebase-database:9.2.1' 
    compile 'com.google.firebase:firebase-auth:9.2.1' 
    compile 'com.intuit.sdp:sdp-android:1.0.4' 
    testCompile 'junit:junit:4.12' 
} 
apply plugin: 'com.google.gms.google-services' 

这里是我的logcat错误

08-11 20:27:00.404 21175-21175/com.example.mher.citygo E/AndroidRuntime: FATAL EXCEPTION: main 
                      Process: com.example.mher.citygo, PID: 21175 
                      java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mher.citygo/com.example.mher.citygo.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.app.ActionBar.setTitle(java.lang.CharSequence)' on a null object reference 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3256) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3352) 
                       at android.app.ActivityThread.access$1100(ActivityThread.java:223) 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1797) 
                       ** 

    **at android.os.Handler.dispatchMessage(Handler.java:102) 
                        at android.os.Looper.loop(Looper.java:158) 
                        at android.app.ActivityThread.main(ActivityThread.java:7231) 
                        at java.lang.reflect.Method.invoke(Native Method)** 

** 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
                       Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.app.ActionBar.setTitle(java.lang.CharSequence)' on a null object reference 
                       at com.example.mher.citygo.MainActivity.onCreate(MainActivity.java:39) 
                       at android.app.Activity.performCreate(Activity.java:6877) 
                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136) 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3209) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3352)  
                       at android.app.ActivityThread.access$1100(ActivityThread.java:223)  
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1797)  
                       at android.os.Handler.dispatchMessage(Handler.java:102)  
                       at android.os.Looper.loop(Looper.java:158)  
                       at android.app.ActivityThread.main(ActivityThread.java:7231)  
                       at java.lang.reflect.Method.invoke(Native Method)  
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)  
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)  
+1

SO是_terrible_调试器。你的启动代码中有一个NullPointerException。你是否尝试过调试代码以查看事件是否为空? – jdv

回答

0

答案很简单。您正在运行的设备和仿真器上不同的Android版本和您的设备不使用ActionBar/Toolbar你的主题,所以它不能够任意设置标题。

我不是太肯定,虽然,因为我没有看到你的整个项目(含布局,风格等)。您可以设置SupportActionBar第一和findViewById显然返回null一次,这是肯定的,或者你正在运行不同版本的应用程序。所以出于某种原因,物理设备上没有Toolbar

0

尝试以下,而不是getSupportActionBar().setTitle(null)

Field f = toolbar.getClass().getDeclaredField("mTitleTextView"); 
f.setAccessible(true); 
TextView yourTextView = (TextView) f.get(toolbar); 
yourTextView.setTitle(""); 
相关问题