2012-04-09 61 views
0

我對Android編程比較陌生,並且遇到通貨膨脹問題。我試圖創建一個簡單的活動,從之前選擇的ListView項目中分出幾個描述性字段。使用通貨膨脹從XML佈局訪問TextView字段?

我可以從ListView訪問源數據沒有任何問題,但後續活動顯示選定的數據不起作用。具體來說,下面的XML佈局摘錄(在layout/info.xml中)和相應的代碼會生成一個活動,它會顯示OK,但不會根據需要顯示字符串「XYZZY」(如上所示,字符串通常是從ListView,但在本例中簡化爲硬編碼字符串)。

我在做什麼錯?這裏的XML摘錄:

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/black" 
    android:padding="10dp" > 

    <!-- Info text --> 
    <TextView 
     android:id="@+id/infoname" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="12dp" 
     android:gravity="center_horizontal" 
     android:textColor="@color/white" 
     android:textSize="24sp" /> 

    ... 

</RelativeLayout> 

而這裏的java的摘錄:

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.info); 

    LayoutInflater li = getLayoutInflater(); 
    View infoView = li.inflate(R.layout.info, null); 

    TextView name = (TextView) infoView.findViewById(R.id.infoname); 
    name.setText("XYZZY"); 

    ... 

} 

回答

2

通過設置內容查看()你不需要做充氣自己。你沒有看到你的文本的原因是膨脹的佈局沒有添加到視圖層次結構。

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.info); 

    TextView name = (TextView) findViewById(R.id.infoname); 
    name.setText("XYZZY"); 

    ... 

} 
+0

明白了,謝謝。 – gcl1 2012-04-09 20:53:15

0

你不能做的setContentView(R.layout.info)和膨脹在相同的佈局相同的活動,選擇的方法之一。對於你上面的例子有正確的代碼:

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    LayoutInflater li = getLayoutInflater(); 
    View infoView = li.inflate(R.layout.info, null); 

    setContentView(infoView); 
    TextView name = (TextView) infoView.findViewById(R.id.infoname); 
    name.setText("XYZZY"); 

    ... 

}