所以我做了个测试,结果发现了一个问题。以下内容将用于检索文本
public void SetName(){
try{
EditText editText = new EditText(MainActivity.getAppContext());
editText = editText.findViewById(R.id.idExample);
name = editText.getText().toString();
}catch (Exception e){Toast.makeText( MainActivity.getAppContext() , "error", Toast.LENGTH_LONG).show();
e.printStackTrace();}
}
当我测试为什么会出现以下错误时
java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
我认为这与我如何调用上下文有关。
protected void onCreate(Bundle savedInstanceState) {
MainActivity.appContext = getApplicationContext();
}
public static Context getAppContext() {
return appContext;
}
但如果这是我不知道怎么解决的问题
编辑文本对象
<EditText
android:id="@+id/idExample"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:autofillHints="Name"
android:ems="10"
android:hint="@string/name"
android:inputType="text"
android:text="@string/string" />
发布于 2020-07-18 14:34:02
如果您的EditText在活动中,您应该编写以下代码
public void SetName(){
try{
EditText editText =findViewById(R.id.idExample);
name = editText.getText().toString();
}catch (Exception e){Toast.makeText( MainActivity.getAppContext() , "error", Toast.LENGTH_LONG).show();
e.printStackTrace();}
}
如果EditText包含在片段或布局中,则包括
从方法onCreateView的片段中获取视图并返回此视图
View view = inflater.inflate(R.layout.your_layout , parent , false)
public void SetName(){
try{
editText = view.findViewById(R.id.idExample);
name = editText.getText().toString();
}catch (Exception e){Toast.makeText( MainActivity.getAppContext() , "error", Toast.LENGTH_LONG).show();
e.printStackTrace();}
}
发布于 2020-07-18 14:17:31
问题在这里,正在执行第一个编辑文本而不是第二个编辑文本,所以请确保删除这一行代码。
EditText editText = new EditText(MainActivity.getAppContext());
try{
EditText editText = findViewById(R.id.idExample);
name = editText.getText().toString();
}catch (Exception e){Toast.makeText( MainActivity.getAppContext() , "error", Toast.LENGTH_LONG).show();
e.printStackTrace();}
}
发布于 2020-07-18 14:13:51
在XML中为Edittext
定义的Id是idExample
,但您正在使用id作为IDExamble
将R.id.IDExamble
更改为R.id.idExample
。
https://stackoverflow.com/questions/62969480
复制相似问题