2015-05-31 45 views
-1

如標題所示,如何通過Parcelable接口將WifiP2pManager和Channel對象發送到其他活動?如何通過Parcelable接口將WifiP2pManager對象發送到其他活動

我不是那種流利的java和Android SDK,所以一個示例代碼非常有幫助。

謝謝。

+0

向我們展示您的驗證碼已經嘗試過了。 – umka

+0

我沒有任何工作代碼。我不知道如何。我們知道我們可以通過intent.putExtra()發送正常數據類型,但是這是WifiP2pManager,我不知道該怎麼辦。 – ShootingKIng

回答

0

確定我們不能通過意圖發送這些對象後,我試圖在我的活動之間共享數據,所以靜態的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

0

如果您確實需要與活動共享p2p管理器的實例,我真的建議您在完成任務時考慮更好的方式,而不是簡單地發送它。

完成它的一種方法是在其他類中實現可用於所有活動的共享部分,例如創建擴展Application的新類。在其中實現WifiP2pManager和Channel處理,將其標記爲清單中的應用程序。

然後在活動中使用getApplicationContext()並將其強制轉換爲類並使用任何公共函數來獲取WifiP2pManager和Channel對象。

0

創建靜態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; 
    } 
相關問題