![](/img/trans.png)
[英]How to set text or add text to a specific line in multiline EditText in android?
[英]Android, set text for an EditText on startup
所以我有一个简单的android应用程序,我在其中从文本文件中提取文本(该部分正在工作),我想将该文本设置为EditText.setText()。 我遇到的问题是我无法在onCreate()方法中执行此操作,因为尚未创建EditText字段和UI(从表面上看)。
我的问题是在哪里做这件事的好地方? 创建GUI元素后是否立即调用了一个函数?
public class MainActivity extends ActionBarActivity
{
private final String FILE_NAME = "awayReply";
private EditText myEditMessage;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null)
{
getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit();
}
}
@Override
protected void onStart()
{
String message = readMessage();
myEditMessage = (EditText)findViewById(R.id.edit_message);
if(myEditMessage != null)
{
myEditMessage.setText(message, TextView.BufferType.EDITABLE);
}
}
XML布局:
<RelativeLayout 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"
android:orientation="horizontal"
android:paddingBottom="16dp"
android:paddingTop="16dp" >
<EditText
android:id="@+id/edit_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/lbl_message"
android:inputType="textImeMultiLine" />
<Button
android:id="@+id/btn_update"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/edit_message"
android:onClick="updateMessage"
android:text="@string/lbl_update" />
<ToggleButton
android:id="@+id/toggle_away"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/lbl_enable"
android:layout_alignBottom="@+id/lbl_enable"
android:layout_toRightOf="@+id/edit_message"
android:textOff="Disabled"
android:textOn="Enabled"
android:onClick="toggleEnabled" />
</RelativeLayout>
您必须先使用以下方法扩大布局,才能在TextView中设置文本
setContentView(R.layout.main_activity);
在活动的OnCreate
一旦发生这种情况,您可以执行以下操作:
EditText editText = (EditText)findViewById(R.id.myEditText)
完整示例:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); // this needs to happen first
EditText editText = (EditText)findViewById(R.id.myEditText)
editText.setText("my text", TextView.BufferType.EDITABLE); // <-- needs that second parameter
}
编辑:更新为EditText而不是TextView
我想我已经解决了我的问题。 我需要在定义了onCreateView的PlaceholderFragment中进行这项工作。 当我在这里调用findviewbyid时,它不会返回null。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.