Handler 接收Parcelable ArrayList时返回空指针

xingty 2014-08-23 09:41:24
最近在测试handler接受子线程发过来的Parcelable ArrayList时遇到了个问题,无论怎么试,handler 通过msg.getData().getParcelableArrayList("xxx") 返回的都是空指针,而几乎同样的代码,用intent传到另一个Activity,却可以正常取到Parcelable ArrayList,请教各位大虾,这是什么问题导致的?




public void click(View view) {

Bundle bundle = new Bundle() ;
bundle.putParcelableArrayList("ppp", (ArrayList<Parcelable>)users) ;

MyThread mt = new MyThread() ;
Thread t = new Thread(mt) ;
t.start() ;
}

private class MyThread implements Runnable {

@Override
public void run() {

users = new ArrayList<Parcelable>() ;
for(int i=0;i<10;i++) {
User u = new User() ;
u.setUsername(i+"") ;
u.setPassword(i+"") ;

users.add(u) ;
}
Message msg = new Message() ;
msg.what = 1 ;
Bundle bundle = new Bundle() ;
bundle.putParcelableArrayList("ppp", (ArrayList<? extends Parcelable>) users) ;
handler.sendMessage(msg) ;
}


private Handler handler = new Handler() {

@Override
public void handleMessage(Message msg) {
List<Parcelable> lists = msg.getData().getParcelableArrayList("ppp") ;

System.out.println("--------------" + lists.size());
}

} ;
...全文
92 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sagittarius1988 2014-08-23
  • 打赏
  • 举报
回复
引用 3 楼 xingty 的回复:
[quote=引用 2 楼 sagittarius1988 的回复:] [quote=引用 1 楼 sagittarius1988 的回复:]
Message msg = new Message() ;
msg.what = 1 ;
Bundle bundle = new Bundle() ;
 msg.setData(bundle);
bundle.putParcelableArrayList("ppp", (ArrayList<? extends Parcelable>) users) ;
handler.sendMessage(msg)  ;
错了,应该是
Bundle bundle = new Bundle() ;
bundle.putParcelableArrayList("ppp", (ArrayList<? extends Parcelable>) users) ;
msg.setData(bundle);
[/quote] 好丢脸,又是这种低级错误...[/quote] 能记住就是好事
xingty 2014-08-23
  • 打赏
  • 举报
回复
引用 2 楼 sagittarius1988 的回复:
[quote=引用 1 楼 sagittarius1988 的回复:]
Message msg = new Message() ;
msg.what = 1 ;
Bundle bundle = new Bundle() ;
 msg.setData(bundle);
bundle.putParcelableArrayList("ppp", (ArrayList<? extends Parcelable>) users) ;
handler.sendMessage(msg)  ;
错了,应该是
Bundle bundle = new Bundle() ;
bundle.putParcelableArrayList("ppp", (ArrayList<? extends Parcelable>) users) ;
msg.setData(bundle);
[/quote] 好丢脸,又是这种低级错误...
sagittarius1988 2014-08-23
  • 打赏
  • 举报
回复
引用 1 楼 sagittarius1988 的回复:
Message msg = new Message() ;
msg.what = 1 ;
Bundle bundle = new Bundle() ;
 msg.setData(bundle);
bundle.putParcelableArrayList("ppp", (ArrayList<? extends Parcelable>) users) ;
handler.sendMessage(msg)  ;
错了,应该是
Bundle bundle = new Bundle() ;
bundle.putParcelableArrayList("ppp", (ArrayList<? extends Parcelable>) users) ;
msg.setData(bundle);
sagittarius1988 2014-08-23
  • 打赏
  • 举报
回复
Message msg = new Message() ;
msg.what = 1 ;
Bundle bundle = new Bundle() ;
 msg.setData(bundle);
bundle.putParcelableArrayList("ppp", (ArrayList<? extends Parcelable>) users) ;
handler.sendMessage(msg)  ;
package com.example.wzq; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import com.example.wzq.MyInfo.MyInfoActivity; import com.example.wzq.gameview.WzqGame; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.Parcelable; import android.app.Activity; import android.content.Intent; import android.graphics.Color; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.KeyEvent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import android.widget.ImageView.ScaleType; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener{ private ViewPager viewPager; private List imageViews; //滑动的图片集合 private String[] titles;//图片标题 private int[] imageResId;//图片ID private List dots; //图片标题正文的那些点集合 private TextView tv_title; private int currentItem = 0;//当前图片的索引号 Intent intent = new Intent(); private ScheduledExecutorService scheduledExecutorService; //切换到当前显示的图片 private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { viewPager.setCurrentItem(currentItem); } }; //定义两种颜色设置 static final int COLOR1 = Color.parseColor("#787878"); static final int COLOR2 = Color.parseColor("#ffffff"); //定义四个按钮切换按钮 private Button start_btn=null; private Button bluetooth_btn=null; private Button myinfo_btn=null; private Button finish_btn=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //生成滚动图片 initImageFlow(); View view_

80,348

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧