2016-07-14 138 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