![](/img/trans.png)
[英]How to create an interface to get info from a Fragment to an Android Activity?
[英]How to use a receiver info at other activity or fragment, in Android?
我正在嘗試使接收器能夠通知手機是否以及何時連接到Internet。
現在,問題是我有一個處理兩個片段的主要活動。
在其中一個片段中,我有一種需要使用Internet的搜索方法。
因此,我想做的是:如果沒有Internet,則在按下搜索按鈕后,該用戶將得到祝酒。
為此,我在主要活動中寫了以下課程-
public class ConnectionChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Boolean netBol;
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetInfo = connectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
boolean isConnected = activeNetInfo != null
&& activeNetInfo.isConnectedOrConnecting();
if (isConnected){
Boolean netBol = true;
}else{
netBol = false;
Toast.makeText(context, R.string.no_internet, Toast.LENGTH_LONG).show();
}
}
}
如您所見,我正在嘗試使用布爾netBol來確定是否存在連接。
但關鍵是我想將其傳遞給搜索片段,但我不知道該怎么做。
我還在清單中添加了以下行:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
我還將以下代碼放入主要活動中;
ConnectionChangeReceiver netReceiver = new ConnectionChangeReceiver();
IntentFilter filterNet = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
registerReceiver(netReceiver, filterNet);
就我的理解而言,這就是說我已經在接收方上聲明了,但是在片段上我需要一個。
所以我要問的是:我應該怎么做才能將信息從接收者傳遞到片段,以便我知道是否有互聯網?
您可以在接收器中執行以下操作:
if (isConnected){
BusProvider.getInstance().post(new InternetAvailable(true));
}else{
BusProvider.getInstance().post(new InternetAvailable(false));
Toast.makeText(context, R.string.no_internet, Toast.LENGTH_LONG).show();
}
InternetAvailable
類可以是這樣的:
public class InternetAvailable {
private static boolean isInternetAvalable;
public InternetAvailable(boolean isInternetAvailableParam) {
isInternetAvailable = isInternetAvailableParam
}
@Produce public InternetAvailable isInternetAvailable() {
return isInternetAvailable;
}
}
BusProvider
類是這樣的:
public final class BusProvider {
private static final Bus BUS = new Bus();
public static Bus getInstance() {
return BUS;
}
private BusProvider() {
// No instances.
}
}
像這樣修改您的SearchFragment
:
@Override public void onResume() {
super.onResume();
BusProvider.getInstance().register(this);
}
@Override public void onPause() {
super.onPause();
BusProvider.getInstance().unregister(this);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.