Fragment与Activity相互传递值

 

/**
* 情况1.fragment向activity传递值:
* 首先在fragment中写一个接口,fragment然后在需要传递值得地方调用接口里面的方法,在activity中实现这个接口并重写接口里面的方法
* 情况2.点击Activity中的按钮(在Activity布局中,与ViewPager同级),在当前显示Fragment中的执行某些操作
* 思路一:通过FragmentPagerAdapter.getItem()获取当前Fragment对象,调用执行Fragment中的public方法。
* 思路二:在Activity中定义一个接口,Fragment实现这一接口
*/
实例 通过点解RecyclerView的按钮,Activity作出相应改变
① RecyclerView的Adapter定义接口,调用接口
②Activity中实现接口

//在Activity中
gattDeviceAdapter.setViewAlphaItem(new MultiplayerGattDeviceAdapter.ViewAlpha() {
            @Override
            public void setConnectDeviceButtonAlpha(float alpha) {
                connectSelectedDevice.setAlpha(alpha);
            }
            public void setConnectDeviceButtonClickable(boolean flag){
                connectSelectedDevice.setClickable(flag);
            }
        });
//GattDeviceAdapter中
//    适配器中定义的接口,在活动中实现
    public interface ViewAlpha{
        void setConnectDeviceButtonAlpha(float alpha);
        void setConnectDeviceButtonClickable(boolean clickable);
    }
    public void setViewAlphaItem(ViewAlpha viewAlphaItem){
        this.viewAlphaItem=viewAlphaItem;
    }
    private ViewAlpha viewAlphaItem;

  

//在适配器中使用接口
        viewHolder.addDeviceButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int position=viewHolder.getAdapterPosition();
                BluetoothDevice bluetoothDevice=bluetoothDeviceArrayList.get(position);
                if(mScanning){
                    Toast.makeText(v.getContext(),"正在扫描",Toast.LENGTH_SHORT).show();
                    return;
                }
                if(viewHolder.addDeviceButton.getText().toString()=="添加"){
                    selectedBluetoothDeviceList.add(bluetoothDevice);
                    MultiplayerModeTrainingMainActivity.selectedBluetoothDeviceSize++;

                    viewAlphaItem.setConnectDeviceButtonAlpha(1f);//当添加了设备,设置不透明度为1
                    viewAlphaItem.setConnectDeviceButtonClickable(true);//当添加了设备,设置为可以点击

                    Log.d(TAG, "onClick: setConnectDeviceButtonAlpha=1f");
                    viewHolder.addDeviceButton.setText("删除");
                    viewHolder.addDeviceFlag.setVisibility(View.VISIBLE);
                    Log.d(TAG, "onClick: +"+"设备数目为="+selectedBluetoothDeviceList.size()+"地址为"+getAddress());

                }else{
                    selectedBluetoothDeviceList.remove(bluetoothDevice);
                    MultiplayerModeTrainingMainActivity.selectedBluetoothDeviceSize--;
                    if(selectedBluetoothDeviceSize==0){
                        viewAlphaItem.setConnectDeviceButtonAlpha(0.5f);//当全部删除了设备,设置不透明度为0.5
                        viewAlphaItem.setConnectDeviceButtonClickable(false);//当删除了设备,设置为可以点击
                        Log.d(TAG, "onClick: setConnectDeviceButtonAlpha=0.5f");
                    }
                    viewHolder.addDeviceButton.setText("添加");
                    viewHolder.addDeviceFlag.setVisibility(View.INVISIBLE);
                    Log.d(TAG, "onClick: -"+"设备数目为="+selectedBluetoothDeviceList.size()+"地址为"+getAddress());

                }
            }
        });

 



转载于:https://www.cnblogs.com/sunupo/p/10420127.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值