2016-07-14 143 views
0

我只是嘗試我的應用程序運行在Android N具有顯示大小小Android:身份不顯示時顯示大小小

layout.xml

<RelativeLayout 
    android:id="@+id/layout_top" 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:layout_alignParentTop="true" 
    android:alpha="0.77" 
    android:background="#000000" > 

    <ImageView 
     android:id="@+id/img_back" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_marginLeft="10dp" 
     android:src="@drawable/ic_ham_menu" /> 

    <TextView 
     android:id="@+id/txtback" 
     style="@style/textviewstyle_robotoRegular" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_marginLeft="5dp" 
     android:layout_toRightOf="@+id/img_back" 
     android:text="@string/msgs_to_rj_heading" 
     android:textColor="#CCFFFFFF" 
     android:textSize="20sp" /> 



<ImageView 
    android:id="@+id/img_alarm" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:layout_alignParentRight="true" 
    android:layout_marginRight="15dp" 
    android:src="@drawable/ic_timer_default"  
    android:visibility="visible" /> 

</RelativeLayout> 

我想是指的ID爲具有ID爲 「img_alarm」

img_alarm = (ImageView) rootView.findViewById(R.id.img_alarm); 

當Android的n個顯示尺寸小的圖像沒有在用戶界面中顯示,圖像ID也沒有設置。當我們改變顯示大小時,UI將顯示,並且其ID已設置。

我沒有得到爲什麼沒有顯示當顯示尺寸小的Android N.

正在錯誤

產生的原因:顯示java.lang.NullPointerException:嘗試上的空對象引用

java.lang.RuntimeException: Unable to resume activity {org.radiomango.app/org.radiomango.app.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.widget.ImageView.getId()' on a null object reference 
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3385) 
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3425) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2698) 
at android.app.ActivityThread.-wrap12(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1445) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6044) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.widget.ImageView.getId()' on a null object reference 
at org.radiomango.app.HomeFragment.onResume(HomeFragment.java:322) 
at android.app.Fragment.performResume(Fragment.java:2398) 
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1032) 
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1171) 
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1153) 
at android.app.FragmentManagerImpl.dispatchResume(FragmentManager.java:2049) 
at android.app.FragmentController.dispatchResume(FragmentController.java:198) 
at android.app.Activity.performResume(Activity.java:6783) 
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3362) 
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3425)  
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2698)  
at android.app.ActivityThread.-wrap12(ActivityThread.java)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1445)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:154)  
at android.app.ActivityThread.main(ActivityThread.java:6044)  
at java.lang.reflect.Method.invoke(Native Method)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)  

調用虛擬方法 '詮釋android.widget.ImageView.getId()' 的Java

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.activity_home, container, false); 
    img_alarm = (ImageView) rootView.findViewById(R.id.img_alarm); 
} 
@Override 
public void onResume() { 
    super.onResume(); 
if (TimeSet == true) { 
    img_alarm.setImageResource(R.drawable.ic_timer_default); 
} else { 
    img_alarm.setImageResource(R.drawable.ic_timer_active); 
} 
} 

是任何更改佈局顯示的改變需要?

+0

你有任何錯誤信息? –

+0

你的問題不清楚。請解釋 – Jas

+0

更新錯誤信息的問題@Mande Kira –

回答

-1

最後我得到了解決方案在Android N當顯示尺寸很小時,我們需要res文件夾中的一個佈局,名爲layout-sw320dp

遇到的問題拷貝到此佈局這些佈局。然後問題解決了

+1

除非您在佈局目錄中定義的activity_home.xml具有缺少@ id/img_alarm元素的高階優先級,否則這不應該是必需的。或者您的代碼可能存在其他問題,但您絕對不需要擁有完全相同的XML文件佈局-sw320dp,只是爲了支持「小」顯示大小。 – alanv