方法调用';fab.setOnClickListener(new View.OnClickListener(){@Override public void on…';可能产生';java.lang.NullPointerException';
我在安卓Studio 1.5.1中创建了一个新的空白活动项目,使用min API 15 生成代码后,我有以下警告/错误: 代码输入: 代码输入:方法调用';fab.setOnClickListener(new View.OnClickListener(){@Override public void on…';可能产生';java.lang.NullPointerException';,java,android,android-studio,Java,Android,Android Studio,我在安卓Studio 1.5.1中创建了一个新的空白活动项目,使用min API 15 生成代码后,我有以下警告/错误: 代码输入: 代码输入: 代码输入: 请告诉我如何解决此问题及其原因。我是Android和Android Studio的新手。以前我使用过Apache Cordova。只需检查/断言fab是否为空: if (fab != null) 或: 像这样: FloatingActionButton fab = (FloatingActionButton) fin
代码输入:
请告诉我如何解决此问题及其原因。我是Android和Android Studio的新手。以前我使用过Apache Cordova。只需检查/断言fab是否为空:
if (fab != null)
或:
像这样:
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
if (fab != null)
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
在这一行中,将onClicklistener
实例作为第二个参数传递给setAction
方法
snackbar可以包含通过设置的操作
setAction(CharSequence,android.view.view.OnClickListener)
像这样改变它
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", new View.OnClickListener() {
@Override
public void onClick(View v) {
//whatever you want to do when "Action" is clicked in the SnackBar
}
}).show();
此空指针是由于Snackbar而来,而不是因为您的浮动按钮。您需要在set Action方法中创建click listener的对象,而不是传递空值。Hi Nonthonbam,这是一个警告。警告出现在Snackbar的
setAction
方法中。如果查看(在本例中为fab
)如果为null,则不会显示警告。此警告将显示在所有视图中,而不仅仅是snackbarIn。在这种情况下,fab
已初始化,因此此警告将不会显示。在这种情况下显示此警告是因为传递给setAction方法的null值其他视图如何?我们如何避免此情况?如果视图已正确初始化,则会显示此警告警告不会显示。但是如果视图为空,它可能会在运行时抛出NullPointerException
。我也有同样的问题,即使这样,我在Snackbar中添加了一个操作,它仍然会给我这个警告。解决方案是在onCreate之外创建view.OnclickListener,并将其传递到Snackbar中,出于某种原因,这是可行的。
if (fab != null)
assert fab != null;
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
if (fab != null)
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", new View.OnClickListener() {
@Override
public void onClick(View v) {
//whatever you want to do when "Action" is clicked in the SnackBar
}
}).show();