简体   繁体   中英

Android Prorgram Crashes when i attempt to getText() from an autocompletetext

I am trying to build an android app that allows you to input text, and will then transfer the text to the main screen. It allows me to build the autocomplete with no issue, but whenever i try to invoke the getText() function, the entire program crashes. Any help would be highly appreciated, thank you

     public class TeamFragment extends DialogFragment {
TextView team1, team2, score1, score2;



    AutoCompleteTextView team1input;



public TeamFragment(View t1, View t2, View s1, View s2) {
    team1=(TextView) t1;
    team2=(TextView) t2;
    score1=(TextView) s1;
    score2=(TextView) s2;
}

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.team_score_layout, container);
    //mEditText = (EditText) view.findViewById(R.id.txt_your_name);
    getDialog().setTitle("Enter Team Name");
    Button b = (Button) view.findViewById(R.id.teamButton);

    b.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            team1input=(AutoCompleteTextView) v.findViewById(R.id.autoCompleteTeam1);
            team1input.getText();         //crashes here
            team1.setText("hi");
            dismiss();
        }
    });
    return view;
}


}

here is the logCat, I appear to be getting a nullpointerexception.

04-23 13:12:33.628: E/AndroidRuntime(902): FATAL EXCEPTION: main
04-23 13:12:33.628: E/AndroidRuntime(902): java.lang.NullPointerException
04-23 13:12:33.628: E/AndroidRuntime(902):  at com.example.ucsb.cs.cs185.dimberman.nba.TeamFragment$1.onClick(TeamFragment.java:42)
04-23 13:12:33.628: E/AndroidRuntime(902):  at android.view.View.performClick(View.java:2485)
04-23 13:12:33.628: E/AndroidRuntime(902):  at android.view.View$PerformClick.run(View.java:9080)
04-23 13:12:33.628: E/AndroidRuntime(902):  at android.os.Handler.handleCallback(Handler.java:587)
04-23 13:12:33.628: E/AndroidRuntime(902):  at android.os.Handler.dispatchMessage(Handler.java:92)
04-23 13:12:33.628: E/AndroidRuntime(902):  at android.os.Looper.loop(Looper.java:123)
04-23 13:12:33.628: E/AndroidRuntime(902):  at android.app.ActivityThread.main(ActivityThread.java:3683)
04-23 13:12:33.628: E/AndroidRuntime(902):  at java.lang.reflect.Method.invokeNative(Native Method)
04-23 13:12:33.628: E/AndroidRuntime(902):  at java.lang.reflect.Method.invoke(Method.java:507)
04-23 13:12:33.628: E/AndroidRuntime(902):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-23 13:12:33.628: E/AndroidRuntime(902):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-23 13:12:33.628: E/AndroidRuntime(902):  at dalvik.system.NativeStart.main(Native Method)

`

Use team1input = (AutoCompleteTextView) view.findViewById(R.id.autoCompleteTeam1) in the onCreateView() method and delete the similar line in the onClick() method.

(Assuming you have the AutoCompleteTextView with autoCompleteTeam1 id defined in the team_score_layout.xml layout file.)

When you call findViewById() under a view class it finds child views of that class.

When the onClick is triggered, View v passed into onClick() is the button. If the AutoCompleteView you are trying to retrieve is not a child of that button then calling v.findViewById() will give you NullPointerException , since the view does not exist under the button's children tree.

Just replace

        team1input=(AutoCompleteTextView) v.findViewById(R.id.autoCompleteTeam1);

with

        team1input=(AutoCompleteTextView) view.findViewById(R.id.autoCompleteTeam1);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM