2011-04-26 102 views
0

我在理解如何在Android中組織我的用戶界面時遇到問題。我最初的計劃是以編程方式創建TextViews和ListViews,並在點擊按鈕時更改它們等。設計Android用戶界面:Textview文本不會更改

這是我的第一個簡單嘗試。 viewFriends是我的Activity類中的一個方法。它在按下菜單按鈕時被調用。

private void viewFriends() 
{ 
    mText = new TextView(this); 
    mText.setText("Gathering information..."); 
    setContentView(mText); 

...無關的代碼如下

爲什麼沒有這個看似簡單的例子工作?我應該如何邏輯地組織和管理我的用戶界面對象(TextViews,ListViews,Buttons等)。

謝謝。

+0

這裏'mText = new TextView(this);'你是從佈局xml中獲取文本框還是試圖動態創建它。 – 2011-04-26 07:35:20

回答

0

不要在您的方法中使用setContentView。通常只應在您的活動的onCreate方法中調用一次。 最好在xml中預定義你的bottons/TextViews,爲它們獲取一個句柄(findViewbyId ...) 然後修改它們。

如果您以編程方式創建它們,只需將它們添加到來自xml的視圖包含器即可。 像:

setContentView(R.layout.main); 

讓main.xml中說有id爲一的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! :) 
+0

這個伎倆。謝謝pennypacker。 – SemperFly 2011-04-26 07:52:25

0

仔細檢查一下你在「this」中得到了什麼。 將其更改爲您的java文件名。此

+0

唉,這沒有奏效。謝謝,不過。 – SemperFly 2011-04-26 07:27:02

0

您必須重新加載/刷新您的活動,一旦你改變它。

試試這個

@Override 
    protected void onResume() { 

     if(param.equalsIgnoreCase("gr")) 
     { 
     finish(); 
     Intent myIntent = new Intent(yourActivity.this, yourActivity.class); 
     startActivity(myIntent); 
    } 
1

最好的工作將在你的XML文件的列表視圖和textviews,讓他們像下面的一個合適的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的對象,現在你可以做任何你想用它做。

:)

讓我,如果你在此發現的任何問題,這樣我可以更新的答案,以滿足您的特定需求。

+0

感謝您的回答。這就是我之前組織過的佈局。我遇到的問題是無法以編程方式更改我的視圖顯示的順序。例如,我顯示「收集信息」字符串,並在收集信息之後,將該字符串隱藏,並將帶有收集到的信息的列表視圖顯示在前面。我試圖用bringToFront()方法來做到這一點,但沒有發生任何事情。 – SemperFly 2011-04-26 07:40:28

+0

因爲這只是一個framelayout和在framelayout內有兩個元素即。你的「收集信息」textview和你的列表視圖(在你的XML文件中設置它的可見性隱藏)。加載完成後,只需使textview不可見並將listview設置爲可見即可。 如果這是你的情況,讓我知道我可以提供一個示例代碼。 – necixy 2011-04-26 08:35:13