【问题标题】:Null pointer exception in android project [duplicate]android项目中的空指针异常[重复]
【发布时间】:2015-10-13 10:22:19
【问题描述】:

在我的项目中,我在下面显示的类中得到了 nullpointerexception,我还附加了 logcat 和下面的 java 类。在这种情况下,我给出了“if(name == null)”之类的条件,我不确定它是否正确或错误如果错误意味着建议我正确的代码来解决 NPE..

提前谢谢你

public void onClick(DialogInterface dialog,int id)
 {
                        // yes();
Intent tablewise = new Intent(Seating_Engagement.this,LoginForm.class);
                            startActivity(tablewise);
                            finish();

                        }
                })

日志猫:

10-13 10:25:33.914  24201-24201/com.sentientit.theiWedplanner E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.NullPointerException
            at com.sentientit.theiWedplanner.Seating_Engagement$2.onClick(Seating_Engagement.java:77)
            at android.view.View.performClick(View.java:4421)
            at android.view.View$PerformClick.run(View.java:18190)
            at android.os.Handler.handleCallback(Handler.java:725)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:175)
            at android.app.ActivityThread.main(ActivityThread.java:5279)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
            at dalvik.system.NativeStart.main(Native Method)
10-13 10:25:45.445  24201-24206/com.sentientit.theiWedplanner I/dalvikvm﹕ threadid=3: reacting to signal 3
10-13 10:25:45.578  24201-24206/com.sentientit.theiWedplanner I/dalvikvm﹕ Wrote stack traces to '/data/anr/traces.txt'

在第 77 行发生异常,我在下面的 java 文件中将该行标记为 (77)

Seating_Engagement

    import android.app.AlertDialog;
    import android.app.Dialog;
    import android.app.ProgressDialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    import android.os.Bundle;
    import android.support.v4.app.FragmentActivity;
    import android.view.View;
    import android.widget.Button;

    import com.bugsense.trace.BugSenseHandler;

    import java.util.StringTokenizer;

    public class Seating_Engagement extends FragmentActivity{

        ProgressDialog myProgressDialog = null;
        String username=welcomeuser1.usernamevalue;
        String result=null;
        String nameresult=null;
        String Table,Chart=null;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);       BugSenseHandler.initAndStartSession(this, "68640bea");

            setContentView(R.layout.seatingchart);

            Button familywise=(Button)findViewById(R.id.familywise);
            Button tablewisesummary=(Button)findViewById(R.id.tableclassify);
            Button assignedguest=(Button)findViewById(R.id.assignedguest);
            Button notassignedguest=(Button)findViewById(R.id.notassignedguest);
            Button tablechair=(Button)findViewById(R.id.tableclass);
            Button groupwise=(Button)findViewById(R.id.groupwise);
            Button tablewise=(Button)findViewById(R.id.tablewisesummary);
            Button familywisesummary=(Button)findViewById(R.id.familywisesummary);
            Button groupwisesummary=(Button)findViewById(R.id.groupwisesummary);
            Button arrangementsummary=(Button)findViewById(R.id.totaltables);


             Button back=(Button)findViewById(R.id.back);
            Button seatingoverview =(Button)findViewById(R.id.seatingview);

            back.setOnClickListener(new View.OnClickListener() {

                //@Override
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    finish();
                }
            });

            seatingoverview.setOnClickListener(new View.OnClickListener() {

                //@Override
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    if(username.equals("null"))
                    {
                        Dialog locationError = new AlertDialog.Builder(
                                Seating_Engagement.this)
                        .setIcon(0)
                        .setTitle("Message!")
                        .setPositiveButton(R.string.ok1,
                                new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                        int id) {
                        // yes();
 (77)   Intent tablewise = new Intent(Seating_Engagement.this,LoginForm.class);
                            startActivity(tablewise);
                            finish();
                            }
                    })
                        .setMessage("Registered users can access this page. Click 'Yes' to login")
                        .setNegativeButton(R.string.no,
                                new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int id) {


                            }
                        })

                        .create();
                        locationError.show();
                    }
                    else
                    {
                        Dialog locationError = new AlertDialog.Builder(
                                Seating_Engagement.this)
                        .setIcon(0)

                        .setPositiveButton("Table",
                                new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                // yes();
                                Intent tablewise = new Intent(Seating_Engagement.this,
                                        Seating_EngagementTable.class);
                                startActivity(tablewise);
                                //  finish();


                            }
                        })

                        .setNegativeButton("Chart",
                                new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                Intent tab=new Intent(Seating_Engagement.this,Seating_Engagementviewtable.class);
                                startActivity(tab);
                                finish();


                            }
                        })

                        .create();
                        locationError.show();


                    }



                }
            });


            notassignedguest.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {

                    Intent tablewise=new Intent(Seating_Engagement.this,Engagement_Notyetseated.class); 
                    startActivity(tablewise);
                    //                  finish();

                }

            });

            assignedguest.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    Intent tablewise=new Intent(Seating_Engagement.this,Engagement_AssignedGuest.class);
                    startActivity(tablewise);
                    //finish();

                }

            });



            tablechair.setOnClickListener(new View.OnClickListener() {

                //@Override
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Intent tablewise=new Intent(Seating_Engagement.this,Engagement_TableClassify.class);    
                    startActivity(tablewise);
                    //                  finish();

                }
            });


            tablewisesummary.setOnClickListener(new View.OnClickListener() {

                //@Override
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    if(username.equals("null"))
                    {
                        Dialog locationError = new AlertDialog.Builder(
                                Seating_Engagement.this)
                        .setIcon(0)
                        .setTitle("Message!")
                        .setPositiveButton(R.string.ok1,
                                new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                // yes();
                                Intent tablewise = new Intent(Seating_Engagement.this,
                                        LoginForm.class);
                                startActivity(tablewise);
                                finish();


                            }
                        })
                        .setMessage("Registered users can access this page. Click 'Yes' to login")
                        .setNegativeButton(R.string.no,
                                new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int id) {


                            }
                        })

                        .create();
                        locationError.show();
                    }
                    else
                    {
                        Dialog locationError = new AlertDialog.Builder(
                                Seating_Engagement.this)
                        .setIcon(0)

                        .setPositiveButton("Table",
                                new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                // yes();
                                Intent tablewise = new Intent(Seating_Engagement.this,
                                        Engagement_TableChairSummary.class);
                                startActivity(tablewise);
                                //finish();


                            }
                        })

                        .setNegativeButton("Chart",
                                new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                Intent tab=new Intent(Seating_Engagement.this,Engagement_ViewTable.class);
                                startActivity(tab);
                                finish();


                            }
                        })

                        .create();
                        locationError.show();


                    }



                }
            });


            familywisesummary.setOnClickListener(new View.OnClickListener() {

                //@Override
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    if(username.equals("null"))
                    {
                        Dialog locationError = new AlertDialog.Builder(
                                Seating_Engagement.this)
                        .setIcon(0)
                        .setTitle("Message!")
                        .setPositiveButton(R.string.ok1,
                                new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                // yes();
                                Intent tablewise = new Intent(Seating_Engagement.this,
                                        LoginForm.class);
                                startActivity(tablewise);
                                finish();


                            }
                        })
                        .setMessage("Registered users can access this page. Click 'Yes' to login")
                        .setNegativeButton(R.string.no,
                                new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int id) {


                            }
                        })

                        .create();
                        locationError.show();
                    }
                    else
                    {
                        Dialog locationError = new AlertDialog.Builder(
                                Seating_Engagement.this)
                        .setIcon(0)

                        .setPositiveButton("Table",
                                new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                // yes();
                                Intent tablewise = new Intent(Seating_Engagement.this,
                                        Engagement_Familywisesummary.class);
                                startActivity(tablewise);
                                //finish();


                            }
                        })

                        .setNegativeButton("Chart",
                                new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                Intent tab=new Intent(Seating_Engagement.this,Engagement_Familyviewtable.class);
                                startActivity(tab);
                                finish();


                            }
                        })

                        .create();
                        locationError.show();

                    }


                }
            });

            groupwisesummary.setOnClickListener(new View.OnClickListener() {

                //@Override
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    if(username.equals("null"))
                    {
                        Dialog locationError = new AlertDialog.Builder(
                                Seating_Engagement.this)
                        .setIcon(0)
                        .setTitle("Message!")
                        .setPositiveButton(R.string.ok1,
                                new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                // yes();
                                Intent tablewise = new Intent(Seating_Engagement.this,
                                        LoginForm.class);
                                startActivity(tablewise);
                                finish();


                            }
                        })
                        .setMessage("Registered users can access this page. Click 'Yes' to login")
                        .setNegativeButton(R.string.no,
                                new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int id) {


                            }
                        })

                        .create();
                        locationError.show();
                    }
                    else
                    {
                        Dialog locationError = new AlertDialog.Builder(
                                Seating_Engagement.this)
                        .setIcon(0)

                        .setPositiveButton("Table",
                                new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                // yes();
                                Intent tablewise = new Intent(Seating_Engagement.this,
                                        Engagement_Groupwisesummary.class);
                                startActivity(tablewise);
                                //finish();


                            }
                        })

                        .setNegativeButton("Chart",
                                new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                Intent tab=new Intent(Seating_Engagement.this,Engagement_Groupviewtable.class);
                                startActivity(tab);
                                finish();


                            }
                        })

                        .create();
                        locationError.show();

                    }


                }
            });

            familywise.setOnClickListener(new View.OnClickListener() {

                //@Override
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub


                    //  String user_url ="http://mobileapps.iwedplanner.com/mobileapps/iwedplanner/mobile/tabledisplay.aspx?unme="+username+"&occasion=Engagement";
                    String user_url ="http://mobileapps.iwedplanner.com/mobileapps/iwedplanner/mobile/version21/seating-table-display.aspx?unme="+username+"&occasion=Engagement";


                    httpclass obj = new httpclass();
                    result = obj.server_conn(user_url);

                    StringTokenizer st = new StringTokenizer(result, "|");
                    result = st.nextToken();

                    //  String user ="http://mobileapps.iwedplanner.com/mobileapps/iwedplanner/mobile/Notallocated_familywise.aspx?unme="+username+"&occasion=Engagement";

                    String user="http://mobileapps.iwedplanner.com/mobileapps/iwedplanner/mobile/version21/notallocated_familywise.aspx?unme="+username+"&occasion=Engagement";

                    httpclass objg = new httpclass();
                    nameresult = objg.server_conn(user);

                    StringTokenizer s = new StringTokenizer(nameresult, "|");
                    nameresult = s.nextToken();

                    if(result.equals("There is no table"))
                    {

                        alertbox("Assignment", "None of the table has been created");

                    }
                    else if(nameresult.equals("No Guests"))
                    {

                        alertbox("Assignment", "No Guest invited");

                    }
                    else
                    {
                        boolean netvalue = false;
                        ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);


                        NetworkInfo info = cm.getActiveNetworkInfo();
                        if (info != null && info.isAvailable()) {
                            netvalue = true;
                            Intent tablewise=new Intent(Seating_Engagement.this,Engagement_FamilwiseAllocation.class);  

                            startActivity(tablewise);
                            //  finish();
                        }
                        else
                        {
                            alertbox("Message!", "No Internet Connection!");
                        }
                    }




                }
            });

            groupwise.setOnClickListener(new View.OnClickListener() {

                //@Override
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub


                    //  String user_url ="http://mobileapps.iwedplanner.com/mobileapps/iwedplanner/mobile/tabledisplay.aspx?unme="+username+"&occasion=Engagement";

                    String user_url ="http://mobileapps.iwedplanner.com/mobileapps/iwedplanner/mobile/version21/tabledisplay.aspx?unme="+username+"&occasion=Engagement";

                    httpclass obj = new httpclass();
                    result = obj.server_conn(user_url);

                    StringTokenizer st = new StringTokenizer(result, "|");
                    result = st.nextToken();

                    //  String user ="http://mobileapps.iwedplanner.com/mobileapps/iwedplanner/mobile/Not_allocated_notfamily.aspx?unme="+username+"&occasion=Engagement";
                    String user="http://mobileapps.iwedplanner.com/mobileapps/iwedplanner/mobile/version21/Not_allocated_notfamily.aspx?unme="+username+"&occasion=Engagement";


                    httpclass objg = new httpclass();
                    nameresult = objg.server_conn(user);

                    StringTokenizer s = new StringTokenizer(nameresult, "|");
                    nameresult = s.nextToken();         
                    if(result.equals("There is no table"))
                    {

                        alertbox("Summary", "None of the table has been created");

                    }
                    else if(nameresult.equals("No Guests"))
                    {

                        alertbox("Assignment", "No Guest invited");

                    }
                    else
                    {

                        Intent tablewise=new Intent(Seating_Engagement.this,Engagement_GroupWiseAllocation.class);                              
                        startActivity(tablewise);
                        //finish();
                    }


                }
            });

            tablewise.setOnClickListener(new View.OnClickListener() {

                //@Override
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    if(username.equals("null"))
                    {
                        Dialog locationError = new AlertDialog.Builder(
                                Seating_Engagement.this)
                        .setIcon(0)
                        .setTitle("Message!")
                        .setPositiveButton(R.string.ok1,
                                new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                // yes();
                                Intent tablewise = new Intent(Seating_Engagement.this,
                                        LoginForm.class);
                                startActivity(tablewise);
                                finish();


                            }
                        })
                        .setMessage("Registered users can access this page. Click 'Yes' to login")
                        .setNegativeButton(R.string.no,
                                new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int id) {


                            }
                        })

                        .create();
                        locationError.show();
                    }
                    else
                    {
                        Dialog locationError = new AlertDialog.Builder(
                                Seating_Engagement.this)
                        .setIcon(0)

                        .setPositiveButton("Table",
                                new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                // yes();
                                Intent tablewise = new Intent(Seating_Engagement.this,
                                        Engagement_TableWiseSummary.class);
                                startActivity(tablewise);
                                //finish();


                            }
                        })

                        .setNegativeButton("Chart",
                                new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                Intent tab=new Intent(Seating_Engagement.this,Engagement_Tableviewtable.class);
                                startActivity(tab);
                                finish();


                            }
                        })

                        .create();
                        locationError.show();
                    }



                }
            });



            arrangementsummary.setOnClickListener(new View.OnClickListener() {

                //@Override
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    // String user_url ="http://mobileapps.iwedplanner.com/mobileapps/iwedplanner/mobile/tabledisplay.aspx?unme="+username+"&occasion=Engagement";

                    String user_url ="http://mobileapps.iwedplanner.com/mobileapps/iwedplanner/mobile/version21/tabledisplay.aspx?unme="+username+"&occasion=Engagement";


                    httpclass obj = new httpclass();
                    result = obj.server_conn(user_url);

                    StringTokenizer st = new StringTokenizer(result, "|");
                    result = st.nextToken();


                    if(result.equals("There is no table"))
                    {

                        alertbox("Summary", "None of the table has been created");

                    }
                    else
                    {

                        Intent tablewise=new Intent(Seating_Engagement.this,Engagement_TotalSeatingStatus.class);        
                        startActivity(tablewise);
                        //  finish();
                    }
                }

            });

        }
        protected void alertbox(String title, String mymessage)  
        {  
            new AlertDialog.Builder(this)  
            .setMessage(mymessage)  
            .setTitle(title)  
            .setCancelable(true)  
            .setNeutralButton(android.R.string.ok,  
                    new DialogInterface.OnClickListener() {  
                @Override
                public void onClick(DialogInterface dialog, int whichButton){}  
            })  
            .show();  
        } 
        @Override
        public void onStart() {
            super.onStart();
            // The rest of your onStart() code.
            //  EasyTracker.getInstance(this).activityStart(this);  // Add this method.
        }

        @Override
        public void onStop() {
            super.onStop();
            // The rest of your onStop() code.
            // EasyTracker.getInstance(this).activityStop(this);  // Add this method.
        }

    }

【问题讨论】:

  • 而不是username.equals("null") 使用username == null
  • @shayan pourvatan 通过更改用户名 == null 仍然获得相同的 NPE

标签: android android-layout android-fragments android-intent android-activity


【解决方案1】:

您没有正确检查用户名是否为空。那就是你的 NPE 所在的地方,用户名是 null,但你在上面调用了“equals()”方法。

改成:

if(username == null){
   (...)
}

【讨论】:

  • @jvrodrigues 我已将其更改为 (username == null) 仍然获得相同的 NPE。
【解决方案2】:

您可以更改 (77) Intent tablewise = new Intent(Seating_Engagement.this,LoginForm.class);

Intent tablewise = new Intent(getActivity(),LoginForm.class);

getActivity().startActivity(tablewise);

【讨论】:

【解决方案3】:
final String user= username.getText().toString();

if (user.matches("")) {
    username.setError("Please Enter Name");
}

【讨论】:

    【解决方案4】:

    试试这个...

      if (TextUtils.isEmpty(username)) {
    
            //code here
    
        } else{
    
            //code here
        }
    

       if(username.equals("")){
    
        Toast.makeText(getApplicationContext(), "Please Enter Username", Toast.LENGTH_SHORT).show();
     }
     else{
    
         //code here      
    
     }
    

    【讨论】:

    • 我试过了还是会出现 NPE。如果有其他方法可以解决它
    • 你试过上面的@Sanju吗??
    • 是的,我试过仍然得到相同的 NPE
    • 试试另一个@Vimal
    • @Naveen 请查看 if 条件下的现有代码,以便使用 Toast 应从 if 条件中删除哪些行
    猜你喜欢
    • 2019-07-08
    • 2018-10-06
    • 2021-09-17
    • 2014-02-04
    • 2015-05-25
    • 2014-07-28
    相关资源
    最近更新 更多