我有一个非常简单的要求。我有一个登录活动。用户输入登录详细信息并单击“提交”按钮后,应用程序应执行Internet访问检查。如果设备未连接到互联网,则应显示“无法访问互联网”的祝酒词。如果可以访问互联网,则应用程序将执行身份验证并导航到主页。
我已经编写了代码片段来在一个单独的类中执行互联网检查以获得可用性。代码段如下:
package com.example.rinventory.Common;
import android.content.Context;
import android.net.NetworkInfo;
import android.net.ConnectivityManager;
public class ConnectionDetector
{
private Context _context;
public ConnectionDetector(Context context)
{
this._context = context;
}
public boolean isConnectingToInternet()
{
ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
//Get all the active networks available.
NetworkInfo info = connectivity.getActiveNetworkInfo();
//If it is connected to available networks return true else false.
if(info != null && info.isConnected())
return true;
else
return false;
}
}
我的登录活动的提交按钮功能如下:
public class RInventoryLogin extends ActionBarActivity
{
boolean isInternetPresent = false;
ConnectionDetector detect;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rinventory_login);
Button btnLogin = (Button) findViewById(R.id.btnSubmit);
btnLogin.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
//Throws error at this particular line
isInternetPresent = detect.isConnectingToInternet();
if(isInternetPresent)
{
EditText editEmail = (EditText)findViewById(R.id.editEmail);
EditText editPassword = (EditText)findViewById(R.id.editPassword);
LoginData data = new LoginData();
data.setEmail(editEmail.getText().toString());
data.setPassword(editPassword.getText().toString());
new CallJsonParserLogin().execute(data);
}
else
{
Toast.makeText(RInventoryLogin.this, "No Internet Access", Toast.LENGTH_SHORT).show();
}
}
});
}
}
当我尝试执行时,它会加载活动。但是,一旦我输入登录详细信息并单击提交,应用程序将关闭“意外地您的应用程序已停止工作”
我在Manifest文件中包含了Internet,网络状态参数。
当我评论该行
时isInternetPresent = detect.isConnectingToInternet();
以及随后的if else块它只是工作正常。我在这里错过了什么问题?
我尝试了相同的创建演示应用程序,并且工作正常。
请帮忙
答案 0 :(得分:0)
您没有初始化detect
对象。
在将点击侦听器设置为按钮之前添加此行:
detect = new ConnectionDetector(this);