-1

私のメインレイアウト(作成時に設定)には、含まれているレイアウトがいくつか含まれていimageviewます。私のコードのどこかで、ビットマップをこれらのimageViewに設定する必要があります。私の方法はこれです:

(ImageView) ((findViewById(R.id.first_app + (i - 1)).findViewById(R.id.app_image)));

これはループ変数です。問題は、 findViewById(R.id.first_app + (i - 1) に対して null を取得することですが、これらのレイアウトはメイン レイアウトに存在します。

このエラーの原因を見つけるのを手伝ってください。私は本当に混乱していて、締め切りが近づいています。ここに私のメインレイアウトxmlがあります:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="3"
    tools:context=".MoreAppsActivity" >

    <RelativeLayout
        android:id="@+id/more_app_title"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:gravity="center" 
        android:background="#EA7026">

        <ImageView
            android:id="@+id/more_app_title_img"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:background="@android:color/transparent" 
            android:src="@drawable/more_app_title_image"/>
    </RelativeLayout>

    <include
        android:id="@+id/first_app"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        layout="@layout/single_app_layout" />

    <include
        android:id="@+id/second_app"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        layout="@layout/single_app_layout" />

    <include
        android:id="@+id/third_app"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        layout="@layout/single_app_layout" />

    <RelativeLayout
        android:id="@+id/more_app_subtitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="60dp"
        android:gravity="center" 
        android:background="#DBBE00">

        <ImageButton
            android:id="@+id/more_app_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@android:color/transparent" 
            android:src="@drawable/more_app_threecircle"/>
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@android:color/black"
            android:layout_below="@id/more_app_button"
            android:layout_marginTop="5dp"
            android:text="?????? ??? ?????"/>
    </RelativeLayout>

</LinearLayout>

含まれているレイアウト:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    >

    <ImageView 
        android:id="@+id/app_image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitXY"/>

    <LinearLayout 
        android:id="@+id/app_text_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:gravity="center_horizontal"
        android:weightSum="100">

        <TextView 
            android:id="@+id/app_text"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="30"
            android:background="#88000000"
            android:text="aligholi salavat"
            android:textSize="22sp"
            android:gravity="center"
            android:textColor="@android:color/white"/>
    </LinearLayout>

</FrameLayout>
4

1 に答える 1

1

問題は

findViewById(R.id.first_app + (i - 1))

基本的に、R.id.first_app は R ファイル内の int への参照です。数値を追加することはできません。これは、他の何かへの参照と等しくなるためです。コンパイル時に順序や値が変わる可能性は十分にあります。

編集: R.id.first_app、R.id.second_app、および R.id.third_app の int 配列を作成できます。このようにして、レイアウトへのポインタは一定のままです。

int[] layouts = {R.id.first_app, R.id.second_app, R.id.third_app};

次に、ループで

findViewById(layouts[i])
于 2013-08-06T15:00:43.210 に答える