2012-04-09 59 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"); 

    ... 

}