2017-10-09 215 views
-3

我使用if-else語句和sharedpreference一起使用,但它崩潰。 我的代碼:SharedPreference ifelse語句

button = (Button) findViewById(R.id.Ferdig1); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      SharedPreferences skuule = getSharedPreferences("skule", Context.MODE_PRIVATE); 
      String skuleString = skuule.getString("skule", ""); 

      if (skuleString == "Vel eit alternativ..") { 
       Toast.makeText(MainActivity.this, "Vel eit alternativ...", Toast.LENGTH_SHORT).show(); 
      } 
      else if (skuleString != "Vel eit alternativ..") { 
       Intent myIntent = new Intent(MainActivity.this, SecondActivity.class); 
       startActivity(myIntent); 
      } 
     } 
    }); 

當「skulestring」不等於「VEL可選擇性企業所得稅。」它的工作原理,並開始新的活動。但是,當它等於「Vel eit alternativ ..」時,該應用程序崩潰。

我的錯誤日誌:

10-09 16:31:53.543 15146-15146/com.heli.minvekeplan E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.heli.minvekeplan, PID: 15146 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.heli.minvekeplan/com.heli.minvekeplan.SecondActivity}: com.google.firebase.database.DatabaseException: Invalid Firebase Database path: Vel eit alternativ.... Firebase Database paths must not contain '.', '#', '$', '[', or ']' 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442) 
    at android.app.ActivityThread.access$800(ActivityThread.java:156) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1351) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:211) 
    at android.app.ActivityThread.main(ActivityThread.java:5389) 
    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:1020) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815) 
Caused by: com.google.firebase.database.DatabaseException: Invalid Firebase Database path: Vel eit alternativ.... Firebase Database paths must not contain '.', '#', '$', '[', or ']' 
    at com.google.android.gms.internal.zzbqh.zzjm(Unknown Source) 
    at com.google.firebase.database.DatabaseReference.child(Unknown Source) 
    at com.heli.minvekeplan.SecondActivity.onCreate(SecondActivity.java:82) 
    at android.app.Activity.performCreate(Activity.java:5990) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2332) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442) 
    at android.app.ActivityThread.access$800(ActivityThread.java:156) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1351) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:211) 
    at android.app.ActivityThread.main(ActivityThread.java:5389) 
    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:1020) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815) 

謝謝你的幫助! :)

+5

閱讀你的logcat它明確指出** * Firebase數據庫路徑不得包含'。','#','$','['或']'*** –

+1

請參閱Firebase數據庫路徑不能包含'。','#','$' ,'['或']' –

+0

http://stackoverflow.com/questions/513832此外,異常發生在'SecondActivity',而不是'MainActivity'。 –

回答

0

首先,在所有的,使用等於代替==比較字符串對象:

if (skuleString.equals("Vel eit alternativ..")) { 
    Toast.makeText(MainActivity.this, "Vel eit alternativ...", Toast.LENGTH_SHORT).show(); 
} 
else { 
    Intent myIntent = new Intent(MainActivity.this, SecondActivity.class); 
    startActivity(myIntent); 
} 

和錯誤看起來像sencondActivity時調用火力路徑

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.heli.minvekeplan/com.heli.minvekeplan.SecondActivity}: com.google.firebase.database.DatabaseException: Invalid Firebase Database path: 

也許你可以向我們展示這一部分。 關心!

+0

使用「.equal」並清理我的firebase後,它就起作用了! –

0

有一個在異常堆棧跟蹤,明確指出

Caused by: com.google.firebase.database.DatabaseException: Invalid Firebase Database path: Vel eit alternativ.... Firebase Database paths must not contain '.', '#', '$', '[', or ']' 

因此消息時,它可能會崩潰,因爲你的火力地堡路徑包含無效字符...