简体   繁体   English

当我尝试从自动完成文本获取getText()时,Android Prorgram崩溃

[英]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. 我正在尝试构建一个允许您输入文本的android应用,然后将文本传输到主屏幕。 It allows me to build the autocomplete with no issue, but whenever i try to invoke the getText() function, the entire program crashes. 它使我可以毫无问题地构建自动完成功能,但是每当我尝试调用getText()函数时,整个程序就会崩溃。 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. 这是logCat,我似乎正在获取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. onCreateView()方法中使用team1input = (AutoCompleteTextView) view.findViewById(R.id.autoCompleteTeam1) ,并在onClick()方法中删除类似的行。

(Assuming you have the AutoCompleteTextView with autoCompleteTeam1 id defined in the team_score_layout.xml layout file.) (假设您在team_score_layout.xml布局文件中定义了带有autoCompleteTeam1 id的AutoCompleteTextView 。)

When you call findViewById() under a view class it finds child views of that class. 当您在视图类下调用findViewById()时,它将查找该类的子视图。

When the onClick is triggered, View v passed into onClick() is the button. 触发onClick时,传递给onClick() View v是按钮。 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. 如果您尝试检索的AutoCompleteView不是该按钮的子项,则调用v.findViewById()将为您提供NullPointerException ,因为该视图不存在于该按钮的子项树下。

Just replace 只需更换

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

with

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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