如何使用setText设置现有EditText项的文本?

时间:2013-11-06 15:21:20

标签: android android-edittext settext

编辑:我是个白痴,继续......

代码和xml如下。我没有收到任何错误,但文本没有显示。任何人都知道为什么这不起作用?

代码:

public boolean onPrepareMenuOptions ( Menu menu ) {
    EditText currency = (EditText) menu.findItem ( R.id.currency );
    currency.setText ( "test" );
    return true;
}

@Override
public boolean onCreateOptionsMenu ( Menu menu ) {
    getMenuInflater ().inflate ( R.menu.new_project, menu );
    return true;
}

XML:

<EditText
    android:id="@+id/currency"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/currency_summary" />

2 个答案:

答案 0 :(得分:1)

我认为问题在于onPrepareMenuOptions没有被调用。以下是documentation所说的内容:

  

在Android 2.3.x及更低版本上,系统调用onPrepareOptionsMenu()   每次用户打开选项菜单(按菜单按钮)。

     

在Android 3.0及更高版本中,选项菜单始终被视为   菜单项在操作栏中显示时打开。当一个事件   发生并且您想要执行菜单更新,您必须调用   invalidateOptionsMenu()请求系统调用   onPrepareOptionsMenu()。

您可以通过两种方式解决此问题:

1)方法1:在onCreateMenuOptions时更新文本(如果需要,可以直接更新XML文件)

2)方法2:在显示菜单之前,在代码中的某处调用invalidateOptionsMenu()

更新:我发现您的代码中存在错误,应该调用super.onPrepareMenuOptions()

public boolean onPrepareMenuOptions ( Menu menu ) {
    super.onPrepareOptionsMenu(menu); // this is important
    EditText currency = (EditText) menu.findItem ( R.id.currency );
    currency.setText ( "test" );
    return true;
}

@Override
public boolean onCreateOptionsMenu ( Menu menu ) {
    getMenuInflater ().inflate ( R.menu.new_project, menu );
    return true;
}    `

答案 1 :(得分:0)

试试这个......

 EditText currency = (EditText) menu.findItem ( R.id.currency );
 SharedPreferences fill = getSharedPreferences("PREFS", 0);
 currency.setText ( fill.getString("string_name","String_Value" );