对于想了解三元运算符和意外的NullPointerException的读者,本文将提供新的信息,我们将详细介绍三元运算符报错,并且为您提供关于android–Screen旋转后的nullPointer
对于想了解三元运算符和意外的NullPointerException的读者,本文将提供新的信息,我们将详细介绍三元运算符报错,并且为您提供关于android – Screen旋转后的nullPointerException、android – super.onStart()上的NullPointerException、android – 来自Parcel.readException的NullPointerException(等)、android – 活动测试教程中的NullPointerException的有价值信息。
本文目录一览:- 三元运算符和意外的NullPointerException(三元运算符报错)
- android – Screen旋转后的nullPointerException
- android – super.onStart()上的NullPointerException
- android – 来自Parcel.readException的NullPointerException(等)
- android – 活动测试教程中的NullPointerException
三元运算符和意外的NullPointerException(三元运算符报错)
我NullPointerException
有时会从下面的行中得到。
System.out.println("Date::"+ row != null ? row.getLegMaturityDate() : "null");
添加括号后,就可以了。
System.out.println("Date::"+ (row != null ? row.getLegMaturityDate() : "null"));
请澄清我的行为。提前致谢。
答案1
小编典典"Date::" + row
永远不会为null,尽管row
有时是。
也就是说,"Date::"+ row != null
等同于("Date::"+ row) != null
总是如此。
android – Screen旋转后的nullPointerException
我在屏幕旋转后得到对象LinearLayout返回的nullPointerException异常,虽然我在onCreate()super.onCreate(null)中传递null; .
我知道Activity必须被销毁并重新创建旁边我传递的savedInstanceState = null表示Activity应该在旋转后开始,因为它是第一次启动,为什么我在旋转后得到这个Exception?
onCreate()片段,其中LinearLayout对象称为historyText
LinearLayout historyText ; // this return exception if it used after rotation .
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(null);
setContentView(R.layout.activity_main);
historyText = (LinearLayout) findViewById(R.id.historyLayoutText);
Log.e("HISTORYVISIBILITY", "VISIBILITY = "+historyText.getVisibility());
getwindow().getDecorView().setsystemUIVisibility(
View.SYstem_UI_FLAG_LAYOUT_STABLE
| View.SYstem_UI_FLAG_LAYOUT_FULLSCREEN);
database = new Database(this);
Bundle extras = getIntent().getExtras();
intent = extras.getInt("activity");
p = new Progress();
getSupportFragmentManager().beginTransaction()
.add(R.id.group, p)
.commit();
orientation = getRotation();
switch (orientation){
case "p" :
addplus();
}
}
logcat的
10-07 22:21:24.365: E/AndroidRuntime(7768): FATAL EXCEPTION: main
10-07 22:21:24.365: E/AndroidRuntime(7768): Process: developer.mohab.gymee, PID: 7768
10-07 22:21:24.365: E/AndroidRuntime(7768): java.lang.RuntimeException: Unable to start activity ComponentInfo{developer.mohab.gymee/developer.mohab.gymee.Cardio.Cardio}: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.widget.LinearLayout.getVisibility()' on a null object reference
10-07 22:21:24.365: E/AndroidRuntime(7768): at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2379)
10-07 22:21:24.365: E/AndroidRuntime(7768): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442)
10-07 22:21:24.365: E/AndroidRuntime(7768): at android.app.ActivityThread.handlerelaunchActivity(ActivityThread.java:4053)
10-07 22:21:24.365: E/AndroidRuntime(7768): at android.app.ActivityThread.access$900(ActivityThread.java:156)
10-07 22:21:24.365: E/AndroidRuntime(7768): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1357)
10-07 22:21:24.365: E/AndroidRuntime(7768): at android.os.Handler.dispatchMessage(Handler.java:102)
10-07 22:21:24.365: E/AndroidRuntime(7768): at android.os.Looper.loop(Looper.java:211)
10-07 22:21:24.365: E/AndroidRuntime(7768): at android.app.ActivityThread.main(ActivityThread.java:5389)
10-07 22:21:24.365: E/AndroidRuntime(7768): at java.lang.reflect.Method.invoke(Native Method)
10-07 22:21:24.365: E/AndroidRuntime(7768): at java.lang.reflect.Method.invoke(Method.java:372)
10-07 22:21:24.365: E/AndroidRuntime(7768): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020)
10-07 22:21:24.365: E/AndroidRuntime(7768): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)
10-07 22:21:24.365: E/AndroidRuntime(7768): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.widget.LinearLayout.getVisibility()' on a null object reference
10-07 22:21:24.365: E/AndroidRuntime(7768): at developer.mohab.gymee.Cardio.Cardio.onCreate(Cardio.java:76)
10-07 22:21:24.365: E/AndroidRuntime(7768): at android.app.Activity.performCreate(Activity.java:5990)
10-07 22:21:24.365: E/AndroidRuntime(7768): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
10-07 22:21:24.365: E/AndroidRuntime(7768): at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2332)
10-07 22:21:24.365: E/AndroidRuntime(7768): ... 11 more
10-07 22:21:24.633: E/SurfaceFlinger(319): rejecting buffer: bufWidth=1358, bufheight=624, front.active.{w=193, h=193}
解决方法:
旋转设备时,活动及其上的所有碎片都将被销毁.要避免这种情况,您应该修改AndroidManifest.xml
<activity
android:name=".MainActivity"
android:configChanges="orientation|screenSize"
这样可以防止异常
android – super.onStart()上的NullPointerException
码:
public static class YouTubeVideo extends SherlockYouTubeFragment implements YouTubePlayer.OnInitializedListener{ private TextView titleview; private TextView descview; private TextView countview; private TextView timeview; private Bundle data; private YouTubePlayer ytp; private String title; private String id; private String desc; private String count; private String time; private int timeint; private int timem; private int times; private Tracker myTracker; private ShareActionProvider mShareActionProvider; @Override public View onCreateView (LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){ data = getArguments(); return inflater.inflate(R.layout.youtubeview,container,false); } @Override public void onStart() { titleview = (TextView) getView().findViewById(R.id.title); descview = (TextView) getView().findViewById(R.id.descriptiontext); countview = (TextView) getView().findViewById(R.id.viewcounttext); timeview = (TextView) getView().findViewById(R.id.timetext); title = data.getString("title"); id = data.getString("id"); desc = data.getString("description"); count = data.getString("viewcount"); time = data.getString("time"); EasyTracker.getInstance().setContext(this.getActivity()); myTracker = EasyTracker.getInstance().getTracker(); FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager .beginTransaction(); YouTubePlayerSupportFragment fragment = new YouTubePlayerSupportFragment(); fragment.initialize(ID,this); fragmentTransaction.add(R.id.youtubeplayer,fragment); fragmentTransaction.commit(); titleview.setText(title); descview.setText(desc); countview.setText(count); try { timeint = Integer.parseInt(time); timem = timeint/60; times = timeint - (timem*60); } catch(NumberFormatException nfe) { // Handle parse error. } if (times<10){ timeview.setText(String.valueOf(timem)+":0"+String.valueOf(times)); } else{ timeview.setText(String.valueOf(timem)+":"+String.valueOf(times)); } super.onStart(); } @Override public void onInitializationFailure(Provider arg0,YouTubeInitializationResult arg1) { Toast.makeText(this.getActivity(),"Uruchamianie filmu nie powiodło się",Toast.LENGTH_LONG).show(); } @Override public void onInitializationSuccess(Provider provider,YouTubePlayer player,boolean wasrestored) { ytp = player; player.addFullscreenControlFlag(4); if(ytp !=null){ ytp.loadVideo(id); } } public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getSherlockActivity().getSupportMenuInflater(); inflater.inflate(R.menu.video_menu,menu); mShareActionProvider = (ShareActionProvider)menu.findItem(R.id.share).getActionProvider(); mShareActionProvider.setShareIntent(createShareIntent()); return true; } private Intent createShareIntent() { myTracker.trackEvent("videoview","share",title + id,(long) 3); Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT,title + " - http://ignastv.tk/id/" + id); sendIntent.setType("text/plain"); mShareActionProvider.setShareIntent(sendIntent); return sendIntent; } public boolean onoptionsItemSelected(MenuItem item) { int itemId = item.getItemId(); if(itemId == R.id.vidsite){ myTracker.trackEvent("videoview","open-in",(long) 3); Intent govideo = new Intent(Intent.ACTION_VIEW); govideo.setData(Uri.parse(id)); startActivity(govideo); return true;} else { return super.onoptionsItemSelected(item); } } }
最有趣的是LogCat显示出行的NullPointerException:
super.onStart();
这是LogCat:
04-27 20:19:30.055: E/AndroidRuntime(14706): FATAL EXCEPTION: main 04-27 20:19:30.055: E/AndroidRuntime(14706): java.lang.NullPointerException 04-27 20:19:30.055: E/AndroidRuntime(14706): at com.google.android.youtube.player.YouTubePlayerSupportFragment.onStart(UnkNown Source) 04-27 20:19:30.055: E/AndroidRuntime(14706): at com.app.app.MainActivity$YouTubeVideo.onStart(MainActivity.java:519) 04-27 20:19:30.055: E/AndroidRuntime(14706): at android.support.v4.app.Fragment.performStart(Fragment.java:1332) 04-27 20:19:30.055: E/AndroidRuntime(14706): at android.support.v4.app.FragmentManagerImpl.movetoState(FragmentManager.java:906) 04-27 20:19:30.055: E/AndroidRuntime(14706): at android.support.v4.app.FragmentManagerImpl.movetoState(FragmentManager.java:1080) 04-27 20:19:30.055: E/AndroidRuntime(14706): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:622) 04-27 20:19:30.055: E/AndroidRuntime(14706): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416) 04-27 20:19:30.055: E/AndroidRuntime(14706): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:420) 04-27 20:19:30.055: E/AndroidRuntime(14706): at android.os.Handler.handleCallback(Handler.java:725) 04-27 20:19:30.055: E/AndroidRuntime(14706): at android.os.Handler.dispatchMessage(Handler.java:92) 04-27 20:19:30.055: E/AndroidRuntime(14706): at android.os.Looper.loop(Looper.java:137) 04-27 20:19:30.055: E/AndroidRuntime(14706): at android.app.ActivityThread.main(ActivityThread.java:5039) 04-27 20:19:30.055: E/AndroidRuntime(14706): at java.lang.reflect.Method.invokeNative(Native Method) 04-27 20:19:30.055: E/AndroidRuntime(14706): at java.lang.reflect.Method.invoke(Method.java:511) 04-27 20:19:30.055: E/AndroidRuntime(14706): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 04-27 20:19:30.055: E/AndroidRuntime(14706): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 04-27 20:19:30.055: E/AndroidRuntime(14706): at dalvik.system.NativeStart.main(Native Method)
这段代码有什么问题?
解决方法
基本上你有两种选择:
>扩展YouTubeBaseActivity并扩展包含YouTubePlayerView的布局 – 它可以工作但你不能使用碎片
>使用您最喜欢的活动并为包含YouTubePlayerFragment的布局进行充气.不要延长它.
我已成功将YoutubePlayerFragment添加为嵌套片段(更新:这会导致一些内存泄漏,因此您可能更愿意避免它).您可以在YouTubePlayerFragment周围添加其他组件,但请注意,因为docs表示您无法在播放视频时将此视图与其他视图叠加在一起.
因此,要解决您的问题,请不要扩展YouTubePlayerFragment,只需将其包含在您的布局中即可.通过调用此片段的初始化,您将在回调中获得一个YouTubePlayer,您可以使用它来控制视频.
android – 来自Parcel.readException的NullPointerException(等)
FATAL EXCEPTION: main java.lang.NullPointerException at android.os.Parcel.readException(Parcel.java:1437) at android.os.Parcel.readException(Parcel.java:1385) at com.yourpackage.ipc.IYourClass$Stub$Proxy.yourMethod(IYourClass.java:488) at com.yourpackage.ipc.YourClassShim.yourMethod(YourClassShim.java:269)
我找到了一堆相关的问题,但没有一个回答“你如何调试这个”.所以我正在提出这个问题/答案.
通过查看android源码here和here,你会发现它可以抛出任何这些(NullPointerException就是我所拥有的):
SecurityException(msg); BadParcelableException(msg); IllegalArgumentException(msg); NullPointerException(msg); IllegalStateException(msg); RuntimeException("UnkNown exception code: " + code + " msg " + msg);
但究竟是什么导致了这些?
解决方法
那么最初的例外来自哪里?好吧,在YourClass.yourMethod()的实际实现的某个地方 – 不在任何parcelable或IPC代码中.所以去那里,将整个方法包装在try / catch中,并记录你抓到的任何内容.
(或者如果你有远程进程断点工作,那么在那里设置一个断点.)
android – 活动测试教程中的NullPointerException
我目前正在尝试活动测试教程(Found here),并遇到问题.似乎每当我尝试在UIThread中调用某些东西时,我都会得到一个java.lang.NullPointerException.
public void testSpinnerUI() {
mActivity.runOnUiThread( new Runnable() {
public void run() {
mSpinner.requestFocus();
}
});
}
这给了我:
Incomplete: java.lang.NullPointerException
没有别的.我现在在两个不同的样品上尝试了这个,结果相同.我试着围绕mSpinner.requestFocus()调用使用try / catch子句,似乎mSpinner在线程内是null.我已经使用在同一个示例中找到的setUp()函数正确设置了它,并且快速assertNotNull(mSpinner)向我显示在setUp()函数之后mSpinner实际上不是null.这可能是什么原因?
编辑;好的,已经完成了一些测试.似乎正在测试的应用程序在每个测试之间重置.这基本上使我必须在每次测试之间重新实例化所有变量.这是正常的吗?
解决方法:
好的,所以看来我现在就开始工作了.至少到某一点.我仍然无法在runOnUiThread()中运行任何东西,但我发现使用@UiThreadTest注释给了我满意的结果.我不再获得NullPointerExceptions,并且setUp()方法甚至可以正确运行.我不知道是什么导致了这个,但是,嘿,至少它正在工作:)
关于三元运算符和意外的NullPointerException和三元运算符报错的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于android – Screen旋转后的nullPointerException、android – super.onStart()上的NullPointerException、android – 来自Parcel.readException的NullPointerException(等)、android – 活动测试教程中的NullPointerException的相关知识,请在本站寻找。
本文标签: