Tag: nullpointerexception

什么是NullPointerException,如何解决?

什么是空指针exception( java.lang.NullPointerException )以及是什么原因造成的? 可以使用哪些方法/工具来确定原因,以便阻止exception导致程序过早终止?

空合并操作符的替代方法

使用Java,为了安全地访问像abcde这样的深层嵌套的引用,我们通常必须在每个级别指定空的检查,或者在Optional s中使用orElse() 。 (与像Kotlin / C#这样a?.b?.c?.d?.e语言不同的是, a?.b?.c?.d?.e或类似的语言。 我想知道下面的辅助方法是否是一个合理的选择: public T valueOrNull(Supplier expression) { try { return expression.get(); } catch (NullPointerException e) { return null; } } 这可以安全地使用value = valueOrNull(() -> abcde) 。 注意:我明白捕获NullPointerException通常是由于性能原因等原因而皱起眉头,但想知道这里的用法是否是一个合理的例外。

如何使用kotlin在android中初始化小部件

我已经开始学习在android中使用kotlin语言,并在初始化我的按钮variables时得到问题,因为在定义我的variables的时候,它要求给予一些初始值,当我用null值初始化并绑定variablesoncreate函数它的给 kotlin.KotlinNullPointerException 这是我的代码 class AddsFragment : Fragment() { var Add: Button = null!! override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { val Rootview = inflater!!.inflate(R.layout.clubsfragment, null, false) Add = Rootview.findViewById(R.id.add) as Button return Rootview } }

Java将kotlin类内容修改为null

Kotlin在编译时使用分离方式进行了空白检查,以“可空”? 和“notnullable”对象。 它有一个KAnnotator来帮助确定来自Java的对象是否为nullabale。 但是,如果不可空的类的某些部分发生了变化呢? 想想看,我们有一只猫,它肯定有一头可以咀嚼的头。 当我们问猫咪喵喵,它的脑袋me:着: package org.cat class CatHead(){ fun mew(){ println(“Mew”) } } class Cat(){ var head = CatHead() fun mew(){ head.mew() } } fun main(args:Array){ val cat = Cat() cat.mew() } 现在,让我们给这张漂亮的照片添加一个JAVA猫疯子(CatManiac.java),当他得到猫的头时, import org.cat.*; public class CatManiac { public static void cutCatHead(Cat cat){ cat.setHead(null); } } 所以如果我们把一只猫传给一个疯子,他肯定会削减它的头。 而猫咪怎么没有头说呢? fun main(args:Array){ val cat […]

Kotlin抛出NullPointerexception

我开始和Java一起使用Kotlin。 这在java下面的代码。 抛出空指针exception initFoodQuantitySpinner(); CartDb cartDb = new CartDb(getActivity()); try { P.addToCart(getActivity(), food.getId(), food.getPrice(), foodQuantity); } catch (Exception e) { e.printStackTrace(); } FoodCartModel foodCartModel = new FoodCartModel(new Food(food.getId(), food.getName(), 0, “”, “”, food.getPrice(), 0, 0, null, “”, “”, null)); cartDb.insertFood(foodCartModel); if (getActivity() != null) getActivity().invalidateOptionsMenu(); 下面的代码在Kotlin中抛出空指针exception。 spinFoodQuantity.visibility = View.VISIBLE val cartDb = CartDb(context) val id […]

片段按钮onClickListener不执行

我有一个片段内的按钮。 moneyBtn获取使用val button:Button? = view?.findViewById(R.id.moneyBtn) as Button? val button:Button? = view?.findViewById(R.id.moneyBtn) as Button? 我用了? 因为IDE会抛出语法错误。 该button现在使用其setOnClickListener: button?.setOnClickListener { moneyGetten() mEditor.putInt("money", money++) mEditor.commit() moneyGetten() Log.d("BUTTON CLICKED", "!") } 我的理论:视图不会因为某些原因而被找到,所以findView会以null , 是“保护”的OnClickListener。 这是我的XML: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="de.fosefx.clickergame.Generator"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/plus1label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="135dp" android:text="+1" android:textAppearance="@style/TextAppearance.AppCompat.Display1" /> <Button android:id="@+id/moneyBtn" style="@style/Widget.AppCompat.Button.Colored" android:layout_width="wrap_content" […]

KotlinNullPointerException:在onCreateOptionsMenu里面找不到searchView; 安卓

我需要与SearchView的MainActivity,它会抛出KotlinNullPointerException:在onCreateOptionsMenu; 这里是我的代码: options_menu.xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/search" android:actionViewClass="android.widget.SearchView" android:icon="@android:drawable/ic_menu_search" app:showAsAction="collapseActionView|ifRoom" android:title="@string/search" /> </menu> MainActivity.java import android.text.TextUtils import android.view.Menu import android.widget.AdapterView import android.widget.SearchView import android.widget.Toast … import kotlinx.android.synthetic.main.activity_main.* import android.app.SearchManager import android.content.Context override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) logd("onCreate MainActivity") setSupportActionBar(toolbar) … } … override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.options_menu, […]

Java – 在不允许使用@NotNull或@Nullable注释的情况下,在编译时检测NPE的最佳方法

我曾经使用大量的@NotNull/@Nullable注释来使IDE在编译时帮助我找出潜在的NPE 。 但是,我的新团队不允许使用@NotNull/@Nullable注释,也不允许使用那些允许的自定义注释。 因此,我比以前更有可能写出NPE导致的错误。 我尝试了几个解决方案: 在Java 8中使用Optional<T> 。但是,这不是每个案件都很好。 通常不建议使用Optional<T>作为字段或参数的类型。 Optional<T>实例本身可能为null也是非常令人沮丧的。 另外,调用ifPresent(obj->…)时,很难在lambda表达式中操作控制流(在Java 9中更容易)。 而使用太多的Optional<T>使代码有点冗长。 (更新:不幸的是, Optional<T>也被禁止使用) 使IDE将每个未注释的实例视为@Nullable 。 这个解决方案确实帮我找到了一些潜在的错误,但是IDE会建议我检查几乎所有的方法调用,这真的很烦人,因为许多方法都是故意不返回null 。 检查每个方法调用。 这是一个可行的解决方案,但是它具有严重的影响,即通过方法调用可能导致null 。 在这种情况下,一个方法的每个参数都可能为null ,并且当一个参数被检查为无效时,该方法通常会连续返回null 。 最后,每个方法都被“感染”,并有可能收到null参数并返回null 。 调用Objects.requireNonNull()来防止上述问题。 它稍微减少了无处不在的检查的痛苦。 但是,它不能保证当不允许null的情况下,调用者不会向null传递null 。 一旦null传递,抛出的运行时NPE更有可能破坏你的应用程序。 切换到kotlin。 当然,这是不允许的:) 是否有其他建议在编译时检测NPE(并保存我的工作)? 我认为这个问题的解决方案可以被广泛使用,不仅仅是帮助自己,因为并不是所有的团队都允许使用@NotNull/@Nullable注解和Optional<T> 。

java.lang.RuntimeException:将结果ResultInfo(who = null,request = 1888,result = 0,data = null)传递给activity

我的应用程序允许用户按下一个按钮,它打开相机,他们可以拍照,它会出现在imageview。 如果用户按下或取消,而相机打开时,我得到这个力量关闭 – 结果失败ResultInfo {谁= null,请求= 1888,结果= 0,数据=空}活动…所以我猜测结果= 0是什么,我需要插入,使这个停止部队关闭? 以下是我的代码。 我知道我忘了一些东西,但不能弄明白! (不可否认,我大约在学习Android开发2周)。 感谢您的帮助! private static final int CAMERA_REQUEST = 1888; private ImageView imageView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.imageView = (ImageView)this.findViewById(R.id.photostrippic1); ImageView photoButton = (ImageView) this.findViewById(R.id.photostrippic1); photoButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, CAMERA_REQUEST); } […]

如何使用kotlin在android中初始化小部件

我已经开始学习在android中使用kotlin语言,并在初始化我的按钮变量时得到问题,因为在定义我的变量的时候,它要求给予一些初始值,当我用null值初始化,并绑定变量oncreate函数它的给 kotlin.KotlinNullPointerException 这是我的代码 class AddsFragment : Fragment() { var Add: Button = null!! override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { val Rootview = inflater!!.inflate(R.layout.clubsfragment, null, false) Add = Rootview.findViewById(R.id.add) as Button return Rootview } }