我想通过对象的数组不使用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();
}});
}
}
}
该错误是:
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");
}