编辑:我是个白痴,继续......
代码和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" />
答案 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" );