java.lang.ClassCastException:的java.lang.Object []不能被转换为pfe.essat.objet.com.Bts []转换为、ClassCastExcept

2023-09-12 05:38:51 作者:眼里住着星

我想通过对象的数组不使用preference 我使用意向!

Object类BTS

 公共类BTS实现Serializable {

        INT idbts;
        字符串nombts;
        字符串ip地址;
        字符串logb;
        字符串PAWB;
        INT xbts;
        INT ybts;
        公用BTS(INT idbts,字符串nombts,字符串ip地址,字符串logb,
                字符串PAWB,INT xbts,诠释ybts){
            超();
            this.idbts = idbts;
            this.nombts = nombts;
            this.ipaddress = IPADDRESS;
            this.logb = logb;
            this.pawb = PAWB;
            this.xbts = xbts;
            this.ybts = ybts;
        }
        // wthis setter和getter
}
 

源活动 PS:JSONParseBts充满listeBts

 大众A级presConnextionActivity延伸活动{

    公用BTS [] listeBts;
    @覆盖
    保护无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        super.setContentView(R.layout.a presconnect);
        最终按钮btsButton =(按钮)findViewById(R.id.btbts);
        // boutonbts
        btsButton.setOnClickListener(新OnClickListener(){
            @覆盖
            公共无效的onClick(视图v){

              Log.w(对myApp,+ listeBts.length);
                意图I =新的意向书(A presConnextionActivity.this,BtsBoutonActivity.class);
                i.putExtra(tabbts,listeBts);

                startActivity(ⅰ);


            }
        });
         新JSONParseBts()执行();
    }

    公共类JSONParseBts扩展的AsyncTask<字符串,字符串,JSONObject的> {...}

}
 

和distination活动:

 公共类BtsBoutonActivity延伸活动{
        小细胞[] listecellule;
        BTS [] listeBts;
        INT I,XX = 0;

        保护无效的onCreate(包savedInstanceState){
            super.onCreate(savedInstanceState);
            super.setContentView(R.layout.btsbouton);

            叠B = getIntent()getExtras()。
            如果(B!= NULL)
            {
                BTS [] listeBts =(BTS [])b.getSerializable(tabbts);
                Log.w(对myApp,+ listeBts.length);
            }其他{
                Log.w(对myApp,你有问题);
            }

        / *意图意图= getIntent();
            listeBts =(BTS [])intent.getSerializableExtra(tabbts); * /

             最终按钮[] B =新按钮[listeBts.length]
             的LinearLayout 113 =(的LinearLayout)findViewById(R.id.linearLayout2);成Btn //

                对于(i = 0; I< listeBts.length;我++){
                    //Log.w(对myApp,listeBts [I]的ToString());
            B〔I] =新的按钮(BtsBoutonActivity.this);
            B〔Ⅰ〕.setText(listeBts [I] .getNombts());
             XX = listeBts [I] .getIdbts();
            Log.w(对myApp,+ XX);
            B〔I] .setId(XX);
            ll3.addView(二[I]);

            最终按钮btbts =(按钮)findViewById(XX);
            btbts.setOnClickListener(新OnClickListener(){
        公共无效的onClick(视图v){

        吐司saved_message = Toast.makeText(BtsBoutonActivity.this,btbts.getText()++ btbts.getId(),1);
              saved_message.show();


              }});

            }
        }

    }
 
Mybatis版本升级踩坑记及背后原理分析

该错误是:

  05-10 16:29:25.096:E / AndroidRuntime(819):java.lang.RuntimeException的:无法启动的活动ComponentInfo {pfe.essat.com/pfe.essat。 com.BtsBoutonActivity}:java.lang.ClassCastException:的java.lang.Object []不能被转换为pfe.essat.objet.com.Bts []
 

解决方案

您可以使用包含序列化数组包装类,我只是测试这和它的作品。

首先,创建简单的包装类:

 的Bean;

公共类BtsWrapper实现Serializable {
    BTS []数组;
    公共BtsWrapper(BTS [] A){
        阵列=一个;
    }
}
 

然后通过序列化包装类的意图:

  btsButton.setOnClickListener(新OnClickListener(){
        @覆盖
        公共无效的onClick(视图v){

            Log.w(对myApp,+ listeBts.length);
            意图I =新的意向书(A presConnextionActivity.this,BtsBoutonActivity.class);
            BtsWrapper bWrapper =新BtsWrapper(listeBts); //添加

            i.putExtra(tabbts,bWrapper); //改性

            startActivity(ⅰ);
        }
    });
 

然后,您可以通过额外的序列化的包装,只是提取数组:

 叠B = getIntent()getExtras()。
如果(B!= NULL)
{
    // BTS [] listeBts =(BTS [])b.getSerializable(tabbts);
    BtsWrapper bWrapper =(BtsWrapper)b.getSerializable(tabbts); //添加
    BTS [] listeBts = bWrapper.array; //添加
    Log.w(对myApp,+ listeBts.length);
}其他{
    Log.w(对myApp,你有问题);
}
 

I want to pass an array of objects without using the preference I use Intent!!!

The Object class Bts

public class Bts implements Serializable {

        int idbts;
        String nombts;
        String ipaddress;
        String logb;
        String pawb;
        int xbts;
        int ybts;
        public  Bts(int idbts, String nombts, String ipaddress, String logb,
                String pawb, int xbts, int ybts) {
            super();
            this.idbts = idbts;
            this.nombts = nombts;
            this.ipaddress = ipaddress;
            this.logb = logb;
            this.pawb = pawb;
            this.xbts = xbts;
            this.ybts = ybts;
        }
        //wthis setter and getter
}

The source activity Ps:JSONParseBts filled listeBts.

public class ApresConnextionActivity extends Activity {

    public Bts[] listeBts;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.setContentView(R.layout.apresconnect);
        final Button btsButton = (Button) findViewById(R.id.btbts);
        //boutonbts
        btsButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {               

              Log.w("myApp",""+listeBts.length);
                Intent i = new Intent(ApresConnextionActivity.this, BtsBoutonActivity.class);
                i.putExtra("tabbts",listeBts);

                startActivity(i);


            }
        });
         new JSONParseBts().execute();
    }

    public class JSONParseBts extends AsyncTask<String, String, JSONObject> { ... }

}

And distination Activity:

    public class BtsBoutonActivity extends Activity {
        cellule[] listecellule;
        Bts[] listeBts;
        int i,xx=0;

        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            super.setContentView(R.layout.btsbouton);

            Bundle b = getIntent().getExtras();
            if (b != null)
            {
                Bts[] listeBts = (Bts[])b.getSerializable("tabbts") ;
                Log.w("myApp",""+listeBts.length);
            }else{
                Log.w("myApp","you have problem");
            }

        /*  Intent intent = getIntent();
            listeBts =  (Bts[])intent.getSerializableExtra("tabbts");*/

             final Button[] b = new Button[listeBts.length];
             LinearLayout ll3 = (LinearLayout)findViewById(R.id.linearLayout2); // Btn  

                for(i = 0; i < listeBts.length; i++){
                    //Log.w("myApp",listeBts[i].toString());
            b[i] = new Button(BtsBoutonActivity.this);
            b[i].setText(listeBts[i].getNombts());
             xx =listeBts[i].getIdbts();
            Log.w("myApp",""+xx);
            b[i].setId(xx);
            ll3.addView(b[i]);

            final Button btbts = (Button) findViewById(xx);
            btbts.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {

        Toast saved_message=Toast.makeText(BtsBoutonActivity.this,btbts.getText()+"  "+btbts.getId(),1);
              saved_message.show();                        


              }});

            }
        }

    }

The error is:

05-10 16:29:25.096: E/AndroidRuntime(819): java.lang.RuntimeException: Unable to start activity ComponentInfo{pfe.essat.com/pfe.essat.com.BtsBoutonActivity}: java.lang.ClassCastException: java.lang.Object[] cannot be cast to pfe.essat.objet.com.Bts[]

解决方案

You can use a wrapper class that contains the Serializable array, I just tested this and it works.

First, create your simple wrapper class:

import java.io.Serializable;

public class BtsWrapper implements Serializable{
    Bts[] array;
    public BtsWrapper(Bts[] a){
        array = a;
    }
}

Then pass the Serializable wrapper class in the Intent:

btsButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {               

            Log.w("myApp",""+listeBts.length);
            Intent i = new Intent(ApresConnextionActivity.this, BtsBoutonActivity.class);
            BtsWrapper bWrapper = new BtsWrapper(listeBts); //added

            i.putExtra("tabbts",bWrapper); //modified

            startActivity(i);
        }
    });

Then, get the Serializable wrapper from the extras, and just extract the array:

Bundle b = getIntent().getExtras();
if (b != null)
{
    //Bts[] listeBts = (Bts[])b.getSerializable("tabbts") ;
    BtsWrapper bWrapper = (BtsWrapper) b.getSerializable("tabbts"); //added
    Bts[] listeBts = bWrapper.array; //added
    Log.w("myApp",""+listeBts.length);
}else{
    Log.w("myApp","you have problem");
}