2014-12-06 48 views
0

我有一个非常简单的要求。我有一个登录活动。一旦用户输入登录信息并点击提交按钮,应用程序应该执行互联网访问检查。如果设备未连接到互联网,则应显示“没有互联网访问”的敬酒。如果可以访问互联网,那么应用程序将执行认证并导航到主页。Android:无源路径

我已经写了代码片段来执行互联网检查在一个单独的类为可用性。该代码片段如下:

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(); 
      } 
     } 
    }); 
    } 
} 

当我尝试执行,它加载的活动。然而,一旦我进入登录信息,并点击提交应用程序关闭与“意外您的应用程序已停止工作”

我已经包括互联网,清单文件,网络状态参数。

当我评论线

isInternetPresent = detect.isConnectingToInternet();

和随后的if else块,它只是正常工作。我在这里失踪的问题可能是什么?

我尝试过创建演示应用程序并且工作正常。

请帮

+0

堆栈跟踪会说的错误是什么和哪些行代码造成的。请编辑您的问题并加入。 – Simon 2014-12-06 12:25:10

+0

你的意思是日志猫的细节? – 2014-12-06 12:27:41

回答

0

你没有初始化detect对象。

点击监听器设置你的按钮之前加入这一行:

detect = new ConnectionDetector(this); 
+0

非常感谢,它解决了这个问题。但出于好奇,我没有初始化另一个演示应用程序中的侦测对象,它只是工作正常。我不知道为什么? – 2014-12-06 12:32:26

+0

请接受我的答案是否能解决你的问题:) 后的代码,我会看看为你 – 2014-12-06 12:34:25

+0

我接受你的答案,它允许用户仅在一定的时间分钟后接受的答案...对不起,延迟,再次感谢:) – 2014-12-06 12:35:53