/**
* 情況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()); } } });