0

私はAndroidプログラミングに比較的慣れておらず、インフレに問題があります。以前に選択したListViewアイテムからいくつかの説明フィールドを吐き出す簡単なアクティビティを作成しようとしています。

ListViewからソースデータに問題なくアクセスできますが、選択したデータを表示するための後続のアクティビティが機能しません。具体的には、次のXMLレイアウトの抜粋(layout / info.xml内)と対応するコードは、正常に起動するアクティビティを生成しますが、文字列「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");

    ...

}
4

2 に答える 2

2

contentView()を設定することで、自分で膨らませる必要はありません。テキストが表示されない理由は、膨らんだレイアウトがビュー階層に追加されていないためです。

@Override
public void onCreate(Bundle savedInstanceState) {

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

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

    ...

}
于 2012-04-09T19:47:26.900 に答える
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");

    ...

}
于 2012-04-09T20:00:14.220 に答える