2017-09-01 6 views
1

私はAndroid 4.4.4/4.4.2/5.0.2でfindViewById()を使用しました。findViewByIdはandroid 4.4.4でnullを返します

しかし、4.4.4にはエラー 'NullpointException'しかありません。

これはMainActivityのコードです。

FrameLayout fl = (FrameLayout) this.findViewById(Util.StringToResourceID(this, "id", "main_map_fl")); 

すべてのアンドロイドにはエラーはありませんが、4.4.4ではnullが返されます。

しかし、

Util.StringToResourceID(this, "id", "main_map_fl") 

それは値を返します。 nullではありません。

私はそのコードの前にsetContentViewを試しました。

私はきれいなプロジェクトも最初に試しました。

なぜエラーが発生したのかわかりません。私を助けてください。

+)

ここにmain_map_fl」を持っている私の.xmlコードがあります。

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/main_rl" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<include 
    android:id="@+id/main_tbt_ll" 
    android:layout_width="200dp" 
    android:layout_height="fill_parent" 
    android:layout_alignParentRight="true" 
    layout="@layout/layout_sub_tbt" 
    android:visibility="visible" /> 

<FrameLayout 
    android:id="@+id/main_map_fl" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent 
    android:layout_toLeftOf="@+id/main_tbt_ll" 
    android:background="#ffff0000" > 
</FrameLayout> 

<ImageView 
    android:id="@+id/main_tbt_shadow_iv" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:layout_toLeftOf="@+id/main_tbt_ll" 
    android:background="@drawable/shadow_w" /> 
<LinearLayout 
    android:id="@+id/main_action_ll" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:orientation="vertical"> 
    <TextView 
     android:id="@+id/main_action_set_admin_tv" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:padding="5dp" 
     android:gravity="center" 
     android:background="#b2333333" 
     style="@style/font_31p_255_255_255"/> 
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@drawable/bottom_bar_bg" > 
     <ImageButton 
      android:background="@drawable/btn_main_actionbar_back" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/main_action_back_ib" 
      android:layout_gravity="center_vertical"/> ...... 
    </LinearLayout> 
</LinearLayout> 

++)

Util.StringToResourceID

intにパッケージ名とクラスの文字列ですが、私は思います。

public static int StringToResourceID(Context context, String _class, String _field) { 
    int rval = 0; 
    String a = context.getPackageName() + ".R$" + _class; 

    try { 
     Class Ra = Class.forName(a); 

     try { 
      rval = Ra.getField(_field).getInt(Ra); 
     } catch (IllegalArgumentException var7) { 
      ........... 
    return rval; 
} 
+0

とは何ですか... Util.StringToResourceID –

+0

私は私のquenstionを編集しました! @MartinMarconcini – parfum

+0

まあ、返される数字は? R.javaを見て、 –

答えて

0

あなたは名前に基づいてresourceIdを取得したいだけですか?これはどう?

public static int StringToResourceID(Context context, String _class, String _field) { 
    return context.getResources().getIdentifier(_field, _class, context.getPackageName()); 
} 
関連する問題