Java 在片段中创建视图时,从EditText获取字符串时出现空指针异常
当从EditText获取字符串时,我得到一个空指针异常。是否因为我使用的是片段,我应该使用异步任务?我不知道为什么会这样。我在添加Java 在片段中创建视图时,从EditText获取字符串时出现空指针异常,java,android,fragment,Java,Android,Fragment,当从EditText获取字符串时,我得到一个空指针异常。是否因为我使用的是片段,我应该使用异步任务?我不知道为什么会这样。我在添加s1=text1.getText().toString()时出错行 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/Lin
s1=text1.getText().toString()时出错代码>行
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.tromto.analyzevalue.MainActivity$PlaceholderFragment" >
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="numberDecimal" >
<requestFocus />
</EditText>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
public class MyFragment1 extends Fragment {
EditText text1;
Button button1;
String s1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
Toast t = Toast.makeText(getActivity(), "Section 1", Toast.LENGTH_LONG);
t.show();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View v = inflater.inflate(R.layout.fragment_main, container, false);
text1 = (EditText)getActivity().findViewById(R.id.editText1);
s1 = text1.getText().toString();
return v;
}
}
公共类MyFragment1扩展了片段{
编辑文本1;
按钮1;
字符串s1;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
设置选项菜单(真);
Toast t=Toast.makeText(getActivity(),“Section 1”,Toast.LENGTH\u LONG);
t、 show();
}
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
最终视图v=充气机。充气(右布局。主容器碎片,假);
text1=(EditText)getActivity().findViewById(R.id.editText1);
s1=text1.getText().toString();
返回v;
}
}
我刚才回答了类似的问题。开始时EditText1中的值为空。不要在创建时使用此解决方案,如果必须,也不要在其中填充一些文本。您正试图从片段的父活动查找dviewbyid
。相反,您应该在片段的视图中找到dviewbyd
使用:
而不是:
text1 = (EditText)getActivity().findViewById(R.id.editText1);
虽然这个答案是正确的,但考虑到事实,您的编辑文本将有一个空值(或其默认值)在这一点上。没有评论,只是一个注释。默认值不会在这一行导致错误,但在这之后可能会导致问题。因此,我应该将编辑文本放在哪里以听取用户的值。我应该执行异步任务还是最好的过程是什么?这是另一个问题,但无论如何,您只需将OnClickListener设置为按钮并从中获取EditText的值。我确实设置了一个按钮以获取EditText的值,但正如@Knickedi所预测的,EditText的值为空。
text1 = (EditText)getActivity().findViewById(R.id.editText1);