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());

                }
            }
        });

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM