如標題所示,如何通過Parcelable接口將WifiP2pManager和Channel對象發送到其他活動?如何通過Parcelable接口將WifiP2pManager對象發送到其他活動
我不是那種流利的java和Android SDK,所以一個示例代碼非常有幫助。
謝謝。
如標題所示,如何通過Parcelable接口將WifiP2pManager和Channel對象發送到其他活動?如何通過Parcelable接口將WifiP2pManager對象發送到其他活動
我不是那種流利的java和Android SDK,所以一個示例代碼非常有幫助。
謝謝。
確定我們不能通過意圖發送這些對象後,我試圖在我的活動之間共享數據,所以靜態的SharedData類出現在我的MainHomeActivity中。
public static class SharedData
{
private static WifiP2pManager mManager;
private static WifiP2pManager.Channel mChannel;
static public void set(WifiP2pManager m, WifiP2pManager.Channel c)
{
mManager = m;
mChannel = c;
}
static public WifiP2pManager getManager()
{
return mManager;
}
static public WifiP2pManager.Channel getChannel()
{
return mChannel;
}
}
,並用它如下, 呼叫活動,
Intent intent = new Intent(view.getContext(), Message.class);
SharedData.set(mManager, mChannel);
startActivity(intent);
,並在名爲活動,
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//...
Intent intent = getIntent();
mManager = new ManetsManager(MainHomeActivity.SharedData.getManager(), MainHomeActivity.SharedData.getChannel());
//...
}
我不知道到什麼程度,這是正確的,但它的工作在我的情況。 希望這對一些人有幫助。 感謝您的回答@ Dr.Jukka
如果您確實需要與活動共享p2p管理器的實例,我真的建議您在完成任務時考慮更好的方式,而不是簡單地發送它。
完成它的一種方法是在其他類中實現可用於所有活動的共享部分,例如創建擴展Application的新類。在其中實現WifiP2pManager和Channel處理,將其標記爲清單中的應用程序。
然後在活動中使用getApplicationContext()並將其強制轉換爲類並使用任何公共函數來獲取WifiP2pManager和Channel對象。
創建靜態Wifip2pmanager對象並初始化經理
public class secondActivity extends AppCompatActivity {
WifiP2pManager mManager;
WifiP2pManager.Channel mChannel;
public static WifiP2pManager sharedManager;
public static WifiP2pManager.Channel sharedChannel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
mManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
mChannel = mManager.initialize(this, getMainLooper(), null);
sharedManager=mManager;
sharedChannel=mChannel;
}
}
在另一個活動調用靜態對象
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat);
WifiP2pManager manager=secondActivity.sharedManager;
WifiP2pManager.Channel channel=secondActivity.sharedChannel;
}
向我們展示您的驗證碼已經嘗試過了。 – umka
我沒有任何工作代碼。我不知道如何。我們知道我們可以通過intent.putExtra()發送正常數據類型,但是這是WifiP2pManager,我不知道該怎麼辦。 – ShootingKIng