2014-04-24 35 views
0

我希望當用戶激活互聯網進行操作,但我得到了以下錯誤:無法實例接收器沒有空的構造

java.lang.InstantiationException:不能實例類com.project.proj.NetworkChangeReceiver ;沒有空的構造

在活動課我寫了下面的

NetworkChangeReceiver net = new NetworkChangeReceiver(getBaseContext()); 

我要去哪裏錯了。請幫忙 !

public class NetworkChangeReceiver extends BroadcastReceiver 
{ 
    Context mContext; 
    public NetworkChangeReceiver(Context context) 
    { 
     mContext= context; 
    } 

    @Override 
    public void onReceive(final Context context, final Intent intent) { 

     String status = NetworkUtil.getConnectivityStatusString(context); 
if (status == "Wifi enabled") 
{ 
    Database details=new Database(mContext); 
    details.open(); 
    List<String> detailsId; 
    detailsId=details.getRecords(); 
    retrieveValuesFromListMethod1(detailsId); 
    Toast.makeText(context, "working properly", Toast.LENGTH_SHORT).show(); 
} 
     Toast.makeText(context, status, Toast.LENGTH_SHORT).show(); 
    } 


public void retrieveValuesFromListMethod1(List detailsId) 
{ 

    Iterator itr = detailsId.iterator(); 
    while(itr.hasNext()) 
    { 
    //do something 

    } 
} 
} 
+0

你需要無參數的構造函數。 – nhaarman

+0

只需添加一個構造函數不帶參數no? –

+0

@niekbut然後我得到Nullpointer異常無法啓動reciever! – user3496326

回答

1

刪除:

Context mContext; 
public NetworkChangeReceiver(Context context) 
{ 
    mContext= context; 
} 
+1

但是然後我得到Nullpointer異常無法啓動reciever! – user3496326

+0

@ user3496326你不知道如何正確使用BroadcastReceiver。請參閱Boban的理解。 – shkschneider

+0

@shkschneider我刪除了它,但我如何傳遞一個上下文到數據庫details = new Database(mContext);使其工作? – user3496326

5

BroadcastReceiver不能有除默認外的其他構造函數。刪除你創建的構造函數。

此外,您不需要將上下文傳遞到BroadcastReceiver,在onReceive參數是上下文。

相關問題