繁体   English   中英

Android,在启动时为EditText设置文本

[英]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.

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