当前位置: 首页 > 面试题库 >

如何解决NullPointerException问题?

陆阳曜
2023-03-14
问题内容

下面的程序引发NullPointerException。在Log cat中,它显示:

01-09 20:40:34.366: D/RemoteIt(2809): java.lang.NullPointerException

单击该按钮时,它不会进入Mousefragment类。我试图解决它,但是我不能-如何解决这个问题?

public class connect extends ListActivity implements OnClickListener{
  WifiApManager wifiApManager;
  TextView tv;
  Button ipscan,con;
  ListView lv;
  EditText tbIp;
  private static final String TAG = "RemoteIt";
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.connect);
    tv =(TextView) findViewById(R.id.iptv);
    ipscan=(Button) findViewById(R.id.scan);
    con=(Button) findViewById(R.id.connect);
    tbIp=(EditText) findViewById(R.id.etIp);
    ipscan.setOnClickListener(this);  
    con.setOnClickListener(this);  
    lv = getListView();
  }
  class scan extends AsyncTask<Void, Void, ArrayList<ClientScanResult>>{ 
    public Context context;
    public scan(Context c)  // constructor to take Context
    {
      context = c;   // Initialize your Context variable
    }

    protected ArrayList<ClientScanResult> doInBackground(Void... params) {
      wifiApManager = new WifiApManager(context);  // use the variable here
      return wifiApManager.getClientList(false);

    }

    protected void onPostExecute(ArrayList<ClientScanResult> clients){
      CustomArrayAdapter cus = new CustomArrayAdapter(connect.this,clients);
      lv.setAdapter(cus);   
    }
  }
  @Override
  public void onClick(View v) {
    // TODO Click Action...
    if(v == ipscan){
      scan myScan = new scan(this); // pass the context to the constructor
      myScan.execute();
    }
    if(v == con){
      onConnectButton();
    }
  }
  private void onConnectButton() {
    // TODO When Btn s Clicked...

    String ip = this.tbIp.getText().toString();
    if (ip.matches("^[0-9]{1,4}\\.[0-9]{1,4}\\.[0-9]{1,4}\\.[0-9]{1,4}$")) {
      try {
        Settings.setIp(ip);
        Intent intent = new Intent(connect.this,MouseFragment.class);
        connect.this.startActivity(intent); 
        //Intent i = new Intent(this, MouseFragment.class);
        //this.startActivity(i);
        this.finish();
      } catch (Exception ex) {

        Toast.makeText(this, this.getResources().getText(R.string.invalid_ip), Toast.LENGTH_LONG).show(); **//this toast is displayed**
        Log.d(TAG, ex.toString());
      }
    } else {
      //this.tvError.setText("Invalid IP address");
      //this.tvError.setVisibility(View.VISIBLE);
      Toast.makeText(this, this.getResources().getText(R.string.in_valid), Toast.LENGTH_LONG).show();
    }
  };

  /** OS kills process */
  public void onDestroy() {
    super.onDestroy();
  }

  /** App starts anything it needs to start */
  public void onStart() {
    super.onStart();
  }

  /** App kills anything it started */
  public void onStop() {
    super.onStop();
  }
}

编辑

    01-09 21:23:28.663: W/System.err(5657): java.lang.NullPointerException
01-09 21:23:28.665: W/System.err(5657):     at com.arul.remoteit.Settings.setIp(Settings.java:67)
01-09 21:23:28.668: W/System.err(5657):     at com.arul.remoteit.connect.onConnectButton(connect.java:81)
01-09 21:23:28.668: W/System.err(5657):     at com.arul.remoteit.connect.onClick(connect.java:72)
01-09 21:23:28.669: W/System.err(5657):     at android.view.View.performClick(View.java:4445)
01-09 21:23:28.670: W/System.err(5657):     at android.view.View$PerformClick.run(View.java:18429)
01-09 21:23:28.672: W/System.err(5657):     at android.os.Handler.handleCallback(Handler.java:733)
01-09 21:23:28.673: W/System.err(5657):     at android.os.Handler.dispatchMessage(Handler.java:95)
01-09 21:23:28.673: W/System.err(5657):     at android.os.Looper.loop(Looper.java:136)
01-09 21:23:28.674: W/System.err(5657):     at android.app.ActivityThread.main(ActivityThread.java:5081)
01-09 21:23:28.675: W/System.err(5657):     at java.lang.reflect.Method.invokeNative(Native Method)
01-09 21:23:28.677: W/System.err(5657):     at java.lang.reflect.Method.invoke(Method.java:515)
01-09 21:23:28.678: W/System.err(5657):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:781)
01-09 21:23:28.679: W/System.err(5657):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-09 21:23:28.680: W/System.err(5657):     at dalvik.system.NativeStart.main(Native Method)
01-09 21:25:34.395: W/IInputConnectionWrapper(5657): getTextBeforeCursor on inactive InputConnection
01-09 21:25:34.513: W/IInputConnectionWrapper(5657): getTextBeforeCursor on inactive InputConnection

单击该按钮多少次,该异常随同invalid_ip Toast消息一起显示


问题答案:

如前所述,您的问题询问如何解决此问题。

您需要弄清楚在哪里null抛出Exception。为此,请查看堆栈跟踪以查看引起问题的行。然后,您可以使用调试器(或一张纸和一支铅笔)单步执行程序,或仅添加打印语句来确定哪个变量是null

当你知道哪些变量是null,你可以追溯到通过程序弄清楚 为什么 它的null。知道原因后null,就可以解决问题。



 类似资料:
  • 问题内容: 什么是空指针异常,什么原因导致它们? 可以使用哪些方法/工具确定原因,以阻止异常导致程序过早终止? 问题答案: 声明引用变量(即对象)时,实际上是在创建指向对象的指针。考虑以下代码,在其中声明基本类型的变量int: 在此示例中,变量是an ,Java会0为你初始化它。当你10在第二行为其分配值时,你的值将写入所指的存储位置x。 但是,当你尝试声明引用类型时,会发生一些不同的事情。采取以

  • 问题内容: 我在做一个 用。我有我的输出。有人可以帮我吗?谢谢。 sendMailServlet代码: 在GlassFish 2.1上的输出: 问题答案: 您需要实施一个自定义 现在在 另请查看JavaMail常见问题解答

  • 我的问题是,在log4j中是否有任何中心位置,在那里一个单独的更改就可以解决这个问题?

  • 大部分软件都可以通过付出相对较小的努力,让他们比刚发布时快上10到100倍。在市场的压力下,选择一个简单而快速的解决问题的方法是比选择其它方法更为明智而有效率的选择。然而,性能是可用性的一部分,而且通常它也需要被更仔细地考虑。 提高一个非常复杂的系统的性能的关键是,充分分析它,来发现其“瓶颈”,或者其资源耗费的地方。优化一个只占用1%执行时间的函数是没有多大意义的。一个简要的原则是,你在做任何事情

  • 本文向大家介绍JAVA如何解决并发问题,包括了JAVA如何解决并发问题的使用技巧和注意事项,需要的朋友参考一下 并发问题的根源在哪 首先,我们要知道并发要解决的是什么问题?并发要解决的是单进程情况下硬件资源无法充分利用的问题。而造成这一问题的主要原因是CPU-内存-磁盘三者之间速度差异实在太大。如果将CPU的速度比作火箭的速度,那么内存的速度就像火车,而最惨的磁盘,基本上就相当于人双腿走路。 这样

  • 我正在尝试“CountDiinctSlices”代码性问题。我尽力了,得分30%,所以试图查找这样做的人以获得洞察力。基本上,我在答案中没有得到的是初始化的数组(和)的使用以及它是如何被使用的,得到它的人可以友好地引导我完成这段代码。 这是我没有解释就找到的答案 这是全部问题 给出了一个整数M和一个由N个非负整数组成的非空数组a。数组A中的所有整数都小于或等于M。 一对整数(P,Q),使得0≤ P