2017-04-21 116 views
-2

我在androidd共享偏好在android系统

通过警告框中获取客户端的用户名并将其存储在一个变量“名” 这是类获取的用户名我已经做了迄今为止

失败
private void request_user_name() { 
       AlertDialog.Builder builder = new AlertDialog.Builder(this); 
       builder.setTitle("Enter name:"); 

      final EditText input_field = new EditText(this); 

      builder.setView(input_field); 
      builder.setPositiveButton("OK", new DialogInterface.OnClickListener() 


      { 
       @Override 
       public void onClick(DialogInterface dialogInterface, int i) { 


        String name = input_field.getText().toString(); 



         SharedPreferences pref = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE); 

         SharedPreferences.Editor edit = pref.edit(); 

         edit.putString("name", name); 

         edit.commit(); 


        String name = pref.getString("name", ""); 
        name = name.trim(); 
        if (TextUtils.isEmpty(name)){ 
         request_user_name(); 
        } 

和我打电话与

if(name.isEmpty()) { 
    request_user_name(); 
} 

所以request_user_name类应用程序不会产生弹出警告每次我打开这个

但在仿真器安装它的APK时崩溃

模拟器:关系6P API 25

机器人工作室2.3 logcat的:

04-21 19:46:12.921 7369 -7369 /? I/art:不迟到 - 启用-Xcheck:jni(已启用) 04-21 19:46:12.921 7369-7369 /? W/art:使用默认值的X86的意外CPU变体:x86_64 04-21 19:46:13.235 7369-7369/app.torune_sav W/System:ClassLoader引用未知路径:/data/app/app.torune_sav-2/lib/x86_64 04-21 19:46:13.274 7369-7369/app.torune_sav D/FirebaseApp:com.google.firebase.auth.FirebaseAuth未链接。跳过初始化。 04-21 19:46:13.295 7369-7369/app.torune_sav D/FirebaseApp:com.google.firebase.crash.FirebaseCrash未关联。跳过初始化。 04-21 19:46:13.344 7369-7369/app.torune_sav I/FA:应用测量正在启动,版本:9452 04-21 19:46:13.344 7369-7369/app.torune_sav I/FA:要启用调试日志记录运行:ADB壳setprop log.tag.FA VERBOSE 04-21 19:46:13.344 7369-7369/app.torune_sav d/FA:调试启用日志记录 04-21 19:46:13.344 7369-7369/app.torune_sav d/FA:AppMeasurement单散列:75451222 04-21 19:46:13.378 7369-7369/app.torune_sav V/FA:集启用 04-21 19:46:13.378 7369-7369/app.torune_sav V/FA:应用程序包,谷歌应用ID:app.torune_sav,1:718884139232:机器人:90e5088fff923640 04-21 19:46:13.415 7369-7369/app.torune_sav V/FA:注册活动生命周期回调 04-21 19:46:13.417 7369-7369/app.torune_sav I/FirebaseInitProvider:FirebaseAp p初始化成功 04-21 19:46:13.420 7369-7369/app.torune_sav I/InstantRun:起始时刻运行服务器:是主进程 04-21 19:46:13.425 7369-7392/app.torune_sav V/FA :使用测量 服务04-21 19:46:13.435 7369-7392/app.torune_sav V/FA:将 连接到远程服务04-21 19:46:13.504 7369-7369/app.torune_sav W/System:ClassLoader引用的未知路径: /system/priv-app/PrebuiltGmsCore/lib/x86_64 04-21 19:46:13.505 7369-7369/app.torune_sav D/ApplicationLoaders:忽略Vulkan图层 搜索路径 /system/priv-app /PrebuiltGmsCore/lib/x86_64:/system/fake-libs64:/system/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk!/lib/x86_64:/system/lib64:/vendor/lib64 为命名空间0x7e277c41c0f0 04-21 19:46:13.513 7369-7369/app.torune_sav W/System:ClassLoader reference unknown path:04-21 19:46:13.513 7369-7369/app.torune_sav W/System: ClassLoader referenced未知路径: /system/priv-app/PrebuiltGmsCore/lib/x86_64 04-21 19:46:13.514 7369-7369/app。torune_sav D/ApplicationLoaders:忽略Vulkan图层 搜索路径 /system/priv-app/PrebuiltGmsCore/lib/x86_64:/system/fake-libs64:/system/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk!/lib/x86_64:/system/lib64:/ vendor/lib64 for namespace 0x7e277c41c160 04-21 19:46:13.523 7369-7369/app.torune_sav I/DynamiteModule:考虑本地模块 com.google.android.gms.firebase_database:3和remote模块 com.google.android.gms.firebase_database:五月4日至21日19:46:13.523 7369-7369/app.torune_sav I/DynamiteModule:所选远程版本 com.google.android.gms.firebase_database的,版本> = 5 04-21 19:46:13.526 7369-7369/app.torune_sav W/System:ClassLoader 未知路径: /data/user_de/0/com.google.android.gms/app_chimera/m/00000003/n/x86_64 04-21 19:46:13.583 7369-7369/app.torune_sav W/art:在Android 4.1之前, 方法android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList,android.graphics.PorterDuff $ Mode) 会错误地覆盖package-私人方法 android.graphics.drawable.Drawable 04-21 19:46:13.597 7369-7399/app.torune_sav D/NetworkSecurityConfig:无网络安全 配置指定,使用平台默认04-21 19:46:13.608 7369-7369/app.torune_sav V/FA:onActivityCreated 04-21 19:46:13。 754 7369-7369/app.torune_sav W /系统:类加载器引用未知 路径: /data/user_de/0/com.google.android.gms/app_chimera/m/00000002/n/x86_64 04-21 19: 46:13.764 7369-7369/app.torune_sav d/AndroidRuntime:关闭 向下VM

              --------- >beginning of crash 04-21 19:46:13.765 7369-7369/app.torune_sav >E/AndroidRuntime: FATAL EXCEPTION: main 
                  Process: >app.torune_sav, PID: 7369 
                  java.lang.RuntimeException: Unable to start activity 

ComponentInfo {app.torune_sav/app.real_time_chat.MainActivity}: 显示java.lang.NullPointerException:尝试调用虚拟方法 'null boolean java.lang.String.isEmpty()'null对象引用 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 在android.app.ActivityThread.-wrap12(ActivityThread.java) 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1477) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java .lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit。 java:776) 引起:java.lang.NullPointerException:试图调用虚拟方法 'boolean java.lang.String.isEmpty()'null对象引用 at app.real_time_chat.MainActivity.onCreate(MainActivity.java:125) 在android.app.Activity.performCreate(Activity.java:6679) 在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618) 在机器人.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app。(android.app.java:154) 在android.app上。 ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886) at com .android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

任何人都可以找出代码中的问题吗?

+0

后堆栈跟踪,请 –

+0

没错确保 启动应用 $亚行外壳上午开始-n “app.torune_sav/app.market_collectors.MainActivity” -a android.intent.action.MAIN -c包含android.intent.category .LAUNCHER 客户端尚未准备好。等待进程联机 连接到设备上的进程6541 Pixel_API_25 [emulator-5554] 应用程序已终止。 – trevortyrin

+0

编辑你的帖子并发布整个stacktrace ..并编辑你的代码couse现在它没有任何意义,'String name'部分是在你使用'name'变量之后,所以你可能会发布它错误。 – miljon

回答

0

在调用.isEmpty()之前,您应该检查您的String变量是否为空。

if(name == null && name.isEmpty()) { 
    request_user_name(); 
} 

或者您应该使用默认值初始化它。

+0

其用户名不是一个好主意,可以设置一个静态默认值 – trevortyrin