微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android如何从“主活动”中的另一个类调用“活动”数据类型?

如何解决Android如何从“主活动”中的另一个类调用“活动”数据类型?

我有这个单独的代码类,该类使Snackbar显示在我的应用程序中,但是在我当前的实现中,我得到了“ java.lang.NullPointerException”。如何在主类中正确实现它?

这是我的小吃店课:

public class SnackBarUtils
{
private static SnackBarUtils mInstance = null;
private  Snackbar mSnackBar;

private SnackBarUtils()
{

}

public static SnackBarUtils getInstance()
{
    if (mInstance == null)
    {
        mInstance = new SnackBarUtils();
    }
    return mInstance;
}

public void hideSnackBar()
{
    if (mSnackBar != null)
    {
        mSnackBar.dismiss();
    }
}

public void showProblemSnackBar(final Activity activity,final String message)
{
    mSnackBar = Snackbar.make(activity.findViewById(android.R.id.content),message,Snackbar.LENGTH_INDEFINITE);
    // Changing action button text color
    View sbView = mSnackBar.getView();
    TextView textView = sbView.findViewById(com.google.android.material.R.id.snackbar_text);
    mSnackBar.setAction("x",new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            //Call your action method here
            mSnackBar.dismiss();
        }
    });
    textView.setTextColor(Color.WHITE);
    sbView.setBackgroundColor(Color.RED);
    textView.setMaxLines(3);
    mSnackBar.show();
}
}

这是我目前在主要活动中的实现,我已经像这样初始化了Snackbar类:

SnackBarUtils snackBarUtils;

然后这样称呼它:

snackBarUtils.showProblemSnackBar(MainActivity.this,mPlainTextResponse);

我在做什么错?或者正确的方法是什么?

解决方法

首先,您将共享NPE的堆栈跟踪以获取更多上下文。

对于快餐栏实用程序:
如果您使用的是回调,则可以使用该实用工具显示以该回调为参数的小吃店:

interface onProblemSnackbarClickedListener {
  void onActionClicked(View view);
}
...
/* inside SnackBarUtils.java */
...
public static void showProblemSnackbar(View view,@StringRes int message,onProblemSnackbarClickedListener listener){
   Snackbar mSnackBar = Snackbar.make(view,message,Snackbar.LENGTH_INDEFINITE)
    .setAction("x",new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        listener.onActionClicked(v);
        mSnackBar.dismiss();
      }
  })
  mSnackbar.show();
}

回调可以满足在活动/片段中监听它的需要。

有关Snackbar的样式,您可以看到以下相关问题: docs

请牢记从“支持设计”到MDC(材料设计组件)的迁移,这有助于对带有主题属性的小吃店进行全局样式设计。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。