2017-09-01 6 views
1

J'ai utilisé findViewById() dans Android 4.4.4/4.4.2/5.0.2.findViewById renvoie null dans android 4.4.4 seulement

Mais 4.4.4 a seulement l'erreur 'NullpointException'.

Ceci est mon code dans MainActivity.

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

Tout android n'a pas d'erreur, mais ne renvoie que null en 4.4.4.

Cependant,

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

Il renvoie la valeur. Non null.

J'ai essayé setContentView avant ce code.

J'ai d'abord essayé le projet clean.

Je ne sais pas pourquoi l'erreur est survenue. Aidez-moi, s'il vous plaît.

+)

Voici mon code .xml qui a 'main_map_fl'.

<?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

Il est une chaîne PackageName et classe int, je pense.

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

et ce qui est ... Util.StringToResourceID –

+0

J'ai édité ma quenstion! @MartinMarconcini – parfum

+0

Eh bien, quel numéro est retourné? Allez voir R.java et trouvez-le –

Répondre

0

Vous souhaitez uniquement obtenir l'ID de ressource en fonction du nom, est-ce correct? Que dis-tu de ça?

public static int StringToResourceID(Context context, String _class, String _field) { 
    return context.getResources().getIdentifier(_field, _class, context.getPackageName()); 
}