如何将getContext传递给不工作的Java类?
我正在为如何将getContext传递给不工作的Java类?,java,android,progress-bar,Java,Android,Progress Bar,我正在为ProgressBarI创建公共java类,错误如下 java.lang.NullPointerException: Attempt to invoke virtual method 'void app.bridgecenterandstaffmanagament.com.bridgecenterandstaffmanagament.CommonClass.Singletonclass_obj.showProgressBar(android.content.Context)' on a
ProgressBar
I创建公共java类,错误如下
java.lang.NullPointerException: Attempt to invoke virtual method 'void app.bridgecenterandstaffmanagament.com.bridgecenterandstaffmanagament.CommonClass.Singletonclass_obj.showProgressBar(android.content.Context)' on a null object reference
at app.bridgecenterandstaffmanagament.com.bridgecenterandstaffmanagament.Fragments.NotificationFragment.onCreateView(NotificationFragment.java:41)
片段
public class NotificationFragment extends Fragment {
public NotificationFragment() {
// Required empty public constructor
}
RecyclerView recyclerView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_notification, container, false);
recyclerView = v.findViewById(R.id.recylierview_notification);
// Singletonclass_obj.getInstance().showProgressBar(getActivity());
Singletonclass_obj.getInstance().showProgressBar(getContext());
// print();
return v;
}
}
Java类
public class Singletonclass_obj extends Application{
private ProgressBar progressBar;
private static Singletonclass_obj singletonclassobj;
public static Singletonclass_obj getInstance() {
return singletonclassobj;
}
@Override
public void onCreate() {
super.onCreate();
singletonclassobj = this;
}
public void showProgressBar(Context context)
{
// Toast.makeText(context, "welcometoindia", Toast.LENGTH_SHORT).show();
progressBar = new ProgressBar(context, null, android.R.attr.progressBarStyleSmall);
}
public void hideProgressBar()
{
if (progressBar !=null && progressBar.isShown())
progressBar.setVisibility(View.INVISIBLE);
}
}
同样的编码工作很好我的上一个项目..请帮助我任何一个
根据我所说的
尝试将您的Singletonclass\u obj
添加到应用程序标记内的清单文件中,如下面的code
<application
android:name=".Singletonclass_obj"<!--add here your Singletonclass_obj class -->
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
问题是您没有正确初始化应用程序类。基本上,系统不知道您的类,因此它不会被创建。您需要在清单
中的
标记中添加以下内容,它将起作用:
android:name=".Singletonclass_obj"
并这样称呼它:((Singletonclass_obj)getActivity().getApplication()).showProgressBar(getContext())代码>
但是,正如我在评论中所说的,您不需要将应用程序类创建为单例,因为它已经是单例了。因此,您的应用程序类应该是这样的:
public class Singletonclass_obj extends Application {
private ProgressBar progressBar;
@Override
public void onCreate() {
super.onCreate();
}
public void showProgressBar(Context context)
{
// Toast.makeText(context, "welcometoindia", Toast.LENGTH_SHORT).show();
progressBar = new ProgressBar(context, null, android.R.attr.progressBarStyleSmall);
}
public void hideProgressBar()
{
if (progressBar !=null && progressBar.isShown())
progressBar.setVisibility(View.INVISIBLE);
}
}
即使这将解决您关于NPE的问题,您也无法使用ProgressBar
,因为您没有添加它的视图(应用程序没有视图)。为什么不使用Singletonclass\u obj.getInstance().showProgressBar(getActivity())代码>?你的应用程序实现已经是一个单例,没有必要再做一次。@John Joe我试着不工作了,先生。@Iulian Popescu我试着不工作了..我的上一个项目同样的代码在工作,先生..但为什么不在这里工作我不知道,,请告诉我我我犯了什么错误,你在清单文件中添加了单例类对象作为android:name=“”
它正在工作,长官,但进度条没有显示,正在打印toast消息。ProgressDialog也在显示,但ProgressBar没有显示。问题出在哪里,长官。`ProgressBar=new ProgressBar(上下文,null,android.R.attr.progressBarStyleLarge);progressBar.setVisibility(View.VISIBLE);`singletonclass内部sirprogressBar=新的progressBar(上下文,null,android.R.attr.progressBarStyleLarge);progressBar.setVisibility(View.VISIBLE)代码>未显示原因sir@Mariyappan您将无法使用ProgressBar,因为您没有视图添加到您的Singletonclass_obj
谢谢,先生,Toast消息正在打印,但ProgressBar没有显示,先生。如何实现ProgressBar,先生,因为进度对话框已弃用。