怎么在activity之间传递变量

guolei005 2016-05-14 03:41:45
我的毕设类似订餐APP,在ListView中每个菜品对应一个按钮,按下后传递name和price给另一个页面,但是这2个是变量,而Broadcast Receiver中只能传递常量。

怎么解决这个问题?
...全文
460 13 打赏 收藏 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_29628249 2016-05-17
  • 打赏
  • 举报
回复
第一 有没有设置viewholder 如果没有设置一下 你这样直接点onclick 似乎会出现复用性 第二 你的那个data 是什么变量 数组吗 如果是 最好拿到外面去作为全局变量 这样就不用设置final了
lyfuci 2016-05-17
  • 打赏
  • 举报
回复
就是这样啊,Intent传递一下到另一个Activity不就好了。。。 还要传数据回来就在OnActivityResult获取就可以了。
德超 2016-05-16
  • 打赏
  • 举报
回复
listview.get(position) 直接传这个行对象 然后到下一个界面在去取里面的东西
guolei005 2016-05-16
  • 打赏
  • 举报
回复
加上final后,可以使用了。我又想到一个问题,在ListView中,生成每行的数据时都会为每行产生一个data,而不是公用1个data。 不然给 ListData data =getItem(position); //绑定数据 加上 final后应该只能生成一行数据。 @浅笑_JIE
浅笑_JIE 2016-05-16
  • 打赏
  • 举报
回复
引用 5 楼 guolei005 的回复:
public View getView(int position, View convertView, ViewGroup parent) { LinearLayout ll =null; if (convertView!=null){ ll=(LinearLayout)convertView; }else { ll= (LinearLayout) LayoutInflater.from(MainActivity.this).inflate(R.layout.listcell,null); }//绑定列表项布局 ListData data =getItem(position); //绑定数据 ImageView icon =(ImageView)ll.findViewById(R.id.icon); TextView price =(TextView)ll.findViewById(R.id.price); icon.setImageResource(data.iconID); price.setText(data.price); findViewById(R.id.buybuy).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent3 = new Intent(MainActivity.this,THEATY1.class); Bundle b =new Bundle(); intent3.putExtra("name",data.name); b.putString("price",data.getPrice()); 不管是用iintent 还是别的都是提示在内部类当中不能引用本地变量data,需要被声明为常量 intent3.putExtras(b); sendBroadcast(intent3); } });
在你的data 加上 final
guolei005 2016-05-16
  • 打赏
  • 举报
回复
public View getView(int position, View convertView, ViewGroup parent) { LinearLayout ll =null; if (convertView!=null){ ll=(LinearLayout)convertView; }else { ll= (LinearLayout) LayoutInflater.from(MainActivity.this).inflate(R.layout.listcell,null); }//绑定列表项布局 ListData data =getItem(position); //绑定数据 ImageView icon =(ImageView)ll.findViewById(R.id.icon); TextView price =(TextView)ll.findViewById(R.id.price); icon.setImageResource(data.iconID); price.setText(data.price); findViewById(R.id.buybuy).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent3 = new Intent(MainActivity.this,THEATY1.class); Bundle b =new Bundle(); intent3.putExtra("name",data.name); b.putString("price",data.getPrice()); 不管是用iintent 还是别的都是提示在内部类当中不能引用本地变量data,需要被声明为常量 intent3.putExtras(b); sendBroadcast(intent3); } });
guolei005 2016-05-16
  • 打赏
  • 举报
回复
引用 8 楼 qq_33667176 的回复:
listview.get(position) 直接传这个行对象 然后到下一个界面在去取里面的东西
findViewById(R.id.buybuy).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent3 = new Intent(MainActivity.this,THEATY1.class); intent3.putExtra("weizhi",getItemId(position)); startActivity(intent3); } });
guolei005 2016-05-16
  • 打赏
  • 举报
回复
你的意思是把A中ListView的position传给B,然后在B中从A的ListView获得需要的属性吗?@qq_33667176
浅笑_JIE 2016-05-16
  • 打赏
  • 举报
回复
引用 7 楼 guolei005 的回复:
加上final后,可以使用了。我又想到一个问题,在ListView中,生成每行的数据时都会为每行产生一个data,而不是公用1个data。 不然给 ListData data =getItem(position); //绑定数据 加上 final后应该只能生成一行数据。 @浅笑_JIE
getItem(position).getPrice() 将position 加上 final
RoccoCJ 2016-05-15
  • 打赏
  • 举报
回复
为什么要用 Broadcast 呢?跳转 Activity 不需要用到 Intent 么?你这个情况用 Intent 很方便啊。
intent.putExtra("key","value");
东风玖哥 2016-05-15
  • 打赏
  • 举报
回复
直接用Intent传值即可
无嘴小呆子 2016-05-15
  • 打赏
  • 举报
回复
可以通过Eventbus,Bundle进行传递。
魈痕 2016-05-14
  • 打赏
  • 举报
回复
当你按那个按钮的时候 ,你按的哪一个 肯定 有一个position 对应啊 ,它已经是一个常量了,你获取出来 传过去 不就得了

80,490

社区成员

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

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