2017-11-10 18 views
0

私自身のアプリケーションを作成しています。私はAndroid LollipopとMarshmallowでテストしました。すべてうまくいきます。しかし、Android Kitkatを試すたびにエラーが発生します。ここでエラーログがあります: - 私のためとして -Android Kitkatでアプリケーションが動作しない

E/AndroidRuntime: FATAL EXCEPTION: main 
                    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.newproject/com.example.newproject.Progi}: java.lang.ClassCastException: java.lang.Object[] cannot be cast to java.math.BigDecimal[][] 
                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 
                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
                     at android.app.ActivityThread.access$600(ActivityThread.java:130) 
                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
                     at android.os.Handler.dispatchMessage(Handler.java:99) 
                     at android.os.Looper.loop(Looper.java:137) 
                     at android.app.ActivityThread.main(ActivityThread.java:4745) 
                     at java.lang.reflect.Method.invokeNative(Native Method) 
                     at java.lang.reflect.Method.invoke(Method.java:511) 
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                     at dalvik.system.NativeStart.main(Native Method) 
                    Caused by: java.lang.ClassCastException: java.lang.Object[] cannot be cast to java.math.BigDecimal[][] 
                     at com.example.newproject.Progi.onCreate(Progi.java:62) 
                     at android.app.Activity.performCreate(Activity.java:5008) 
                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 
                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)  
                     at android.app.ActivityThread.access$600(ActivityThread.java:130)  
                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)  
                     at android.os.Handler.dispatchMessage(Handler.java:99)  
                     at android.os.Looper.loop(Looper.java:137)  
                     at android.app.ActivityThread.main(ActivityThread.java:4745)  
                     at java.lang.reflect.Method.invokeNative(Native Method)  
                     at java.lang.reflect.Method.invoke(Method.java:511)  
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)  
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)  
                     at dalvik.system.NativeStart.main(Native Method)  

これは、問題は「progi」クラスにライン62上にあるように見えるが、すべてが、それは素晴らしい作品新しいAndroidのバージョンのものは特にOKです。尋ねる

public class Progi extends AppCompatActivity { 
Intent intent; 
Bundle liczby; 
Bundle doble; 
BigDecimal tablica [][]; 
BigDecimal punkty = new BigDecimal(-1); 

@Override 
public boolean onPrepareOptionsMenu(Menu menu) 
{ 
    android.content.SharedPreferences shared = android.preference.PreferenceManager.getDefaultSharedPreferences(this); 
    boolean warunek = shared.getBoolean("serial", false); 
    android.view.MenuItem menuitem = menu.getItem(0); 
    if(warunek) 
    { 
     menuitem.setTitle("Oceny pojedynczo"); 
    } 
    else menuitem.setTitle("Oceny seryjnie"); 
    return true; 
} 


public boolean onCreateOptionsMenu(Menu menu) { 
    android.view.MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.firstmenu, menu); 
    return true; 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.layoutprogi); 
    Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar); 
    setSupportActionBar(myToolbar); 
    getSupportActionBar().setTitle("Progi punktowe"); 
    intent = getIntent(); 
    liczby = intent.getBundleExtra("liczby"); 
    doble = intent.getBundleExtra("doble"); 
    tablica = (BigDecimal[][]) doble.getSerializable("doble"); //here is line 62 
    if(intent.hasExtra("max")) { 
     Bundle a = intent.getBundleExtra("max"); 
     punkty = (BigDecimal) a.getSerializable("max"); 
    } 
    przejscie(true); 

    if(punkty.compareTo(new BigDecimal(-3))==0) 
    { 
     procenty(findViewById(android.R.id.content)); 
    } 
    else if(punkty.compareTo(new BigDecimal(-1))!=0) 
{ 
    liczymy(findViewById(android.R.id.content)); 
}} 

とケースの誰かで

"何tablicaは「意図から取得します?":

BigDecimal[][] tablica = new BigDecimal[16][3]; 
//here i get data from file and put in inside "tablica" 
Bundle doble = new Bundle(); 
doble.putSerializable("doble", tablica); 
Intent intent = new Intent(Starter.this, MyActivity.class); 
intent.putExtra("doble", doble); 
startActivity(intent); 

任意のアイデアが間違って何ですか?

+0

を私はあなたがtablica =(BigDecimalの[] [])doble.getSerializable(「DOBLEを使用するときに、あなたのバグがあると思います"); – crammeur

答えて

0

アレイの実装を(BigDecimal[] [])からArrayListに切り替えてみてください。

あなたが(多分一部の古いバージョンではaswell動作しますが、アップ のAndroid 4.3へのそれが機能していない)前のAndroid 5.0.1へのAndroidのバージョン 上の意思によって配列を渡したい場合は、する必要がありますそれを回避する。 は、ArrayをArrayListに変換することでこれを行うことができます。

次に、あなたはそれをこのような何かキャストされます:

(ArrayList<ArrayList<BigDecimal>>) doble.getSerializable("doble"); 

Related SO answer

+0

ありがとう、私は最終的にArrayListを適切に実装することができたし、すべてがうまくいきます。 – BigRedChick

関連する問題