我在理解如何在Android中组织用户界面时遇到问题。我最初的计划是以编程方式创建TextViews和ListViews,并在单击按钮时更改它们等。
这是我的第一次简单尝试。 viewFriends是我的Activity类中的一个方法。按下菜单按钮时会调用它。
private void viewFriends()
{
mText = new TextView(this);
mText.setText("Gathering information...");
setContentView(mText);
......无关紧要的代码如下
为什么这个看似简单的例子不起作用?我应该如何在逻辑上组织和管理我的用户界面对象(TextViews,ListViews,Buttons等)。
感谢。
答案 0 :(得分:1)
最好的工作是在XML文件中提供这些列表视图和文本视图,并为它们提供合适的ID,如下所示:
<ListView
android:id="@+id/myList"
android:layout_width="wrap_content"
android:layout_weight="1"
/>
就像上面的XML文件中的文本视图一样,添加android:id
属性。
一旦在java文件中定义了这种方式,就会引用它们:
ListView myListObj = (ListView)findViewById(R.id.myList);
现在你的java文件中有一个名为myListObj的对象,现在你可以做任何你想做的事了。
:)
如果您在此发现任何问题,请告诉我,以便我可以更新答案以满足您的特定需求。
答案 1 :(得分:0)
仔细检查“this”中的内容。 将其更改为您的java文件name.this
答案 2 :(得分:0)
不要在你的方法中使用setContentView。通常它只应在您的活动的onCreate方法中调用一次。 最好用xml预定义你的Bottons / TextViews,得到它们的句柄(findViewbyId ...) 并以这种方式修改它们。
如果以编程方式创建它们,只需将它们添加到xml的视图包含中即可。 喜欢:
setContentView(R.layout.main);
让我们在main.xml中说有一个名为root的LinearLayout。
// get accces to that layout:
LinearLayout rootLayout = (LinearLayout) findViewById (R.id.root);
// create a new TextView
TextView tv1 = new TextView (this);
tv.setText("Hello!");
// add it to your base layout
rootLayout.addView(tv1);
// done! :)
答案 3 :(得分:0)
更改后,您必须重新加载/刷新活动。
试试这个
@Override
protected void onResume() {
if(param.equalsIgnoreCase("gr"))
{
finish();
Intent myIntent = new Intent(yourActivity.this, yourActivity.class);
startActivity(myIntent);
}