2017-09-01 82 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")); 

所有的android都沒有錯誤,但只在4.4.4中返回null。

然而,

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

它返回值。非空。

我在該代碼之前試過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()); 
}