当我尝试对EditText进行setText()时,我总是得到这个错误,我看不出哪里出错了。我想了解这个错误背后的逻辑。我敢肯定这是件小事情,但它现在真的困扰着我。
01-25 10:20:44.267 143 25-14325/com.example.gregsquibbs.greg_squibbs_todoapp3 E/androidruntime:致命异常:main process:com.example.gregsquibbs.gregsquibbs.greg_squibbs_todoapp3,pid:14325 java.lang.runtimeexception:无法启动活动ComponentInfo{在Android.app.activitythread.performLaunchActivity(activitythread.java:2817)在Android.app.activitythread.handlelaunchActivity(activitythread.java:2892)在Android.app.activitythread.-Wrap11(未知源:0)在Android.app.activitythread.$h.handleMessage(activitythread.java:1593)在Android.os.handler.dispatchMessage(handler.java:105)在(activitythread.java:6541)位于java.lang.reflect.method.inv在com.android.internal.os.zygote$methodandargscaller.run(zygoteinit.main(zygoteinit.java:767)处的oke(本机方法),原因是:java.lang.nullpointerException:试图在squibbs_todoapp3.editTodo.editTodoActivity.onCreate(editTodoActivity.java:41)在Android.app.activity.performCreate(activity.java:6975)在Android.app.instrumentation.CallActivityonCreate(instrumentation.java:1213)在Android.app.activityThread.performLaunchActivity(activityThread.java:2770)在Android.app.activityThread.handleLaunchActivity(在Android.app.activitythread.-Wrap11(未知来源:0) 在Android.app.activitythread$h.handleMessage(activitythread.java:1593) 在Android.os.handler.DispatchMessage(Handler.java:105) 在Android.os.looper.loop(looper.java:164) 在Android.app.activitythread.main(activitythread.java:6541) 在java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.zygote$methodandargscaller.run(zygote.java:240)在com.android.internal.os.zygoteinit.main(zygoteinit.java:767)
这就是我创建etMessage并使用setText()的地方
public class EditTodoFragment extends Fragment implements EditTodoContract.View {
private EditTodoContract.Presenter presenter;
private EditText etMessage;
public EditTodoFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.edit_todo_fragment, container, false);
System.out.println("Step 2 - Fragment check");
etMessage = (EditText) view.findViewById(R.id.etMessage);
return view;
}
public void setPresenter(EditTodoContract.Presenter todoPresenter) {
this.presenter = todoPresenter;
}
public String getMessage() {
String message = etMessage.getText().toString();
return message;
}
public void setMessage(String message) {
etMessage.setText(message);
}
}
下面是XML文件
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.gregsquibbs.greg_squibbs_todoapp3.EditTodo.EditTodoActivity">
<EditText
android:id="@+id/etMessage"
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:background="@drawable/rect"
android:ems="10"
android:gravity="top"
android:inputType="textShortMessage" />
<Button
android:id="@+id/bSave"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Save"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:onClick="saveButtonClicked"
android:layout_gravity="center_horizontal|bottom"
/>
public class EditTodoActivity extends AppCompatActivity {
private String message;
private int position;
private EditTodoFragment editTodoFragment;
private EditTodoPresenter editTodoPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.edit_todo_activity);
System.out.println("Step 1");
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.contentFrameContainer);
if (fragment == null){
editTodoFragment = new EditTodoFragment();
fm.beginTransaction()
.add(R.id.contentFrameContainer, editTodoFragment)
.commit();
editTodoPresenter = new EditTodoPresenter(editTodoFragment);
}
message = getIntent().getStringExtra(IntentConstants.INTENT_MESSAGE_DATA);
position = getIntent().getIntExtra(IntentConstants.INTENT_ITEM_POSITION, -1);
editTodoFragment.setMessage(message);
}
public void saveButtonClicked(View v) {
if(editTodoFragment.getMessage().equals("")) {
} else {
String changedMessage = (editTodoFragment.getMessage());
Intent intent = new Intent();
intent.putExtra(IntentConstants.INTENT_CHANGED_MESSAGE, changedMessage);
intent.putExtra(IntentConstants.INTENT_ITEM_POSITION, position);
finish();
}
}
etMessage = (EditText) view.findViewById(R.id.messageField);
我不知道这是否与此事有关。
错误可能是您在edit_todo_fragment
之外的其他文件中定义了etmessage
。这就是为什么您没有得到编译错误,因为对etmessage
的引用存在,但它不存在于膨胀的视图中,因此您得到了NPE。
有没有人知道如何让它工作,以便它可以在字段中键入文本?
可能重复: 将edittext限制为单行 我有两个编辑文本。我的问题是,当我按下键盘上的enter键时,它会创建另一组行。或者像编辑文本中的下一行一样创建。我想删除它,我想它是在一行。即使我在键盘上输入enter键,它仍然不会创建下一行。 你是怎么做到的?
如何在android中编写这些新材质设计文本字段? EditText看起来不是那样的,对吧? 谢谢你的帮助!
问题内容: 当我循环时。要设置文本,我首先需要删除监听器,然后再次设置监听器。如何使用 RxJava 做到这 一点 ? 问题答案: 当我循环时。要设置文本,我首先需要删除监听器,然后再次设置监听器。如何使用 RxJava 做到这 一点 ? 为了满足要求,我设法如下扩展RxBinding源代码。 : : 用法 :
我正在制作一个用于存储笔记的Android应用程序。在单击按钮之前,我已使editText的行为类似于textView。单击edit按钮可使editText取值。现在,当我保存该值并将其显示时,问题就出现了。EditText不是我想要的多行,而是一行。 我在xml文件中将editText的inputType属性声明为多行,但在初始化editText的代码中,我将其inputType属性设置为nul
JavaFx文本字段。setText()方法不工作当从另一个线程调用时,我正在从另一个线程调用received()方法。但我无法将文本设置为文本字段,所以我使用了平台。稍后运行,但它不起作用。 DepartmentsController是我的控制器类,它接收了从另一个线程调用的方法(kryonet thread kryonet是一个高级网络库)。 我有主类,是启动的javafx应用程序,初始化控制
问题内容: 这个问题已经在这里有了答案 : Python If == true语句仅在readline的最后一行有效 (1个答案) 2年前关闭。 我试图将我的一行与一个字符串进行比较,但是这行不通。我正在读取一个html文件,我需要解析该文件以将该部分发送到字典,但是当我使用if将行之一与字符串进行比较时,匹配时不会返回True。 这是代码: 问题答案: 我认为这是因为它尝试读取字符串中的换行符: