Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在ListFragment中显示进度对话框_Android_Progressdialog_Android Listfragment - Fatal编程技术网

Android 在ListFragment中显示进度对话框

Android 在ListFragment中显示进度对话框,android,progressdialog,android-listfragment,Android,Progressdialog,Android Listfragment,我有一个从ListFragment扩展的类。我需要显示一个进度对话框,因为从服务器加载数据需要一些时间。我正在使用一个名为MenuItemData的私有类,并从AsyncTask扩展该类。在onPreExecute方法中,我有一行 pDialog = ProgressDialog.show(getActivity(), "Loading...", "Please wait...", false); //line 1 在onPostExecute方法中 pDialog.dismiss(); /

我有一个从ListFragment扩展的类。我需要显示一个进度对话框,因为从服务器加载数据需要一些时间。我正在使用一个名为MenuItemData的私有类,并从AsyncTask扩展该类。在onPreExecute方法中,我有一行

pDialog  = ProgressDialog.show(getActivity(), "Loading...", "Please wait...", false); //line 1
onPostExecute方法中

pDialog.dismiss(); //line 2
现在,当我运行程序时,它会停止并给出NullPointerException

但当我评论这两行时,程序运行良好我认为问题在于getActivity()返回null。

MenuItemData类的代码

private class MenuItemData extends AsyncTask<String, String, String> {
    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);

        try {
            if ((json_.getString(KEY_SUCCESS) != null)) {

                int success = Integer.parseInt(json_.getString(KEY_SUCCESS));

                if (success == 1) {

                    jsonArray = json_.getJSONObject("data").getJSONArray("items");
                    itemCount = jsonArray.length();
                    for (int i = 0; i < itemCount; i++) {
                        jsonObject = jsonArray.getJSONObject(i);
                        menuItems = new Menu_Items();
                        menuItems.setName(jsonObject.getString("name"));
                        menuItems.setDescription(jsonObject.getString("description"));
                        menuItems.setPrice("$"+jsonObject.getString("price"));
                        menu_itemsArrayList.add(menuItems);
                    }
                }
            }
        } catch (JSONException e) {
            Log.e("Menu Items2", e.toString());
        }


        pDialog.dismiss();



    }

    @Override
    protected void onPreExecute() {

        pDialog  = ProgressDialog.show(getActivity(), "Loading...", "Please wait...", false);

        super.onPreExecute();

    }

    @Override
    protected String doInBackground(String... params) {
        json_ = userFunctions.getMenuItems("Appetizers");
        return null;
    }
}
私有类MenuItemData扩展异步任务{
@凌驾
受保护的void onPostExecute(字符串s){
super.onPostExecute(s);
试一试{
if((json_u.getString(KEY_SUCCESS)!=null)){
int success=Integer.parseInt(json_u.getString(KEY_success));
如果(成功==1){
jsonArray=json_551;.getJSONObject(“数据”).getJSONArray(“项目”);
itemCount=jsonArray.length();
对于(int i=0;i
Logcat

02-05 11:25:24.245  28619-28619/com.burgerhot.main E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
        at android.app.AlertDialog.resolveDialogTheme(AlertDialog.java:142)
        at android.app.AlertDialog.<init>(AlertDialog.java:98)
        at android.app.ProgressDialog.<init>(ProgressDialog.java:77)
        at android.app.ProgressDialog.show(ProgressDialog.java:110)
        at android.app.ProgressDialog.show(ProgressDialog.java:99)
        at com.burgerhot.main.MenuCategory1$MenuItemData.onPreExecute(MenuCategory1.java:105)
        at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:561)
        at android.os.AsyncTask.execute(AsyncTask.java:511)
        at com.burgerhot.main.MenuCategory1.setDataToMenu(MenuCategory1.java:61)
        at com.burgerhot.main.MenuCategory1.<init>(MenuCategory1.java:46)
        at com.burgerhot.main.MyAdapter.getItem(Menu.java:47)
        at com.burgerhot.main.MyAdapter.getItem(Menu.java:36)
        at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:97)
        at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:832)
        at android.support.v4.view.ViewPager.populate(ViewPager.java:982)
        at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
        at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
        at android.view.View.measure(View.java:12911)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4805)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:297)
        at android.view.View.measure(View.java:12911)
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:828)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:557)
        at android.view.View.measure(View.java:12911)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4805)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:297)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2097)
        at android.view.View.measure(View.java:12911)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1064)
        at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2446)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4448)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
        at dalvik.system.NativeStart.main(Native Method)
02-05 11:25:24.245 28619-28619/com.burgerhot.main E/AndroidRuntime﹕ 致命异常:主
java.lang.NullPointerException
在android.app.AlertDialog.resolveDialogTheme(AlertDialog.java:142)上
在android.app.AlertDialog.(AlertDialog.java:98)
在android.app.ProgressDialog.(ProgressDialog.java:77)
在android.app.ProgressDialog.show上(ProgressDialog.java:110)
在android.app.ProgressDialog.show上(ProgressDialog.java:99)
位于com.burgerhot.main.MenuCategory1$MenuItemData.onPreExecute(MenuCategory1.java:105)
位于android.os.AsyncTask.executeOnExecutor(AsyncTask.java:561)
在android.os.AsyncTask.execute(AsyncTask.java:511)
位于com.burgerhot.main.MenuCategory1.setDataToMenu(MenuCategory1.java:61)
位于com.burgerhot.main.MenuCategory1.(MenuCategory1.java:46)
位于com.burgerhot.main.MyAdapter.getItem(Menu.java:47)
位于com.burgerhot.main.MyAdapter.getItem(Menu.java:36)
位于android.support.v4.app.FragmentPagerAdapter.InstanceItem(FragmentPagerAdapter.java:97)
位于android.support.v4.view.ViewPager.addNewItem(ViewPager.java:832)
在android.support.v4.view.ViewPager.populate上(ViewPager.java:982)
在android.support.v4.view.ViewPager.populate(ViewPager.java:914)
在android.support.v4.view.ViewPager.onMeasure上(ViewPager.java:1436)
在android.view.view.measure(view.java:12911)
位于android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4805)
位于android.widget.FrameLayout.onMeasure(FrameLayout.java:297)
在android.view.view.measure(view.java:12911)
位于android.widget.LinearLayout.measureVertical(LinearLayout.java:828)
位于android.widget.LinearLayout.onMeasure(LinearLayout.java:557)
在android.view.view.measure(view.java:12911)
位于android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4805)
位于android.widget.FrameLayout.onMeasure(FrameLayout.java:297)
在com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure上(PhoneWindow.java:2097)
在android.view.view.measure(view.java:12911)
在android.view.ViewRootImpl.performTraversals上(ViewRootImpl.java:1064)
在android.view.ViewRootImpl.handleMessage上(ViewRootImpl.java:2446)
位于android.os.Handler.dispatchMessage(Handler.java:99)
位于android.os.Looper.loop(Looper.java:137)
位于android.app.ActivityThread.main(ActivityThread.java:4448)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:511)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:823)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
在dalvik.system.NativeStart.main(本机方法)
菜单类别1

public class MenuCategory1 extends ListFragment {

private UserFunctions userFunctions;
private static String KEY_SUCCESS = "success";
private JSONObject json_, jsonObject;
private JSONArray jsonArray;
int itemCount = 0;
private ProgressDialog pDialog;
private Menu_Items menuItems;
final private Context context=getActivity();
private ArrayList<Menu_Items> menu_itemsArrayList;
CustomAdapterForMenu myCustomAdapter;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

}


public MenuCategory1() {
    userFunctions = new UserFunctions();
    setDataToMenu();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    myCustomAdapter = new CustomAdapterForMenu(getActivity(), R.layout.menu_category1, menu_itemsArrayList);
    /** Setting the list adapter for the ListFragment */
    this.setListAdapter(myCustomAdapter);
    return super.onCreateView(inflater, container, savedInstanceState);
}


private void setDataToMenu() {
    menu_itemsArrayList = new ArrayList<Menu_Items>();
    new MenuItemData().execute();
}

//private class goes here (mentioned above)
public类MenuCategory1扩展了ListFragment{
私有用户函数用户函数;
私有静态字符串密钥\u SUCCESS=“SUCCESS”;
私有JSONObject,JSONObject;
私人JSONArray JSONArray;
int itemCount=0;
私人对话;
专用菜单项菜单项;
最终私有上下文=getActivity();
私有数组列表菜单\项目数组列表;
自定义适配器功能表myCustomAdapter;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
公共菜单类别1(){
userFunctions=新的userFunctions();
setDataToMenu();
}
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
myCustomAdapter=new CustomAdapterPerformMenu(getActivity(),R.layout.menu_category1,menu_itemsArrayList);
/**为ListFragment设置列表适配器*/
这个.setListAdapter(myCustomAdapter);
返回super.onCreateView(充气机、容器、savedIn
Activity act;
MenuItemData(Activity a){
    act = a;
}

@Override
protected void onPreExecute() {
     super.onPreExecute();

    pDialog  = ProgressDialog.show(act, "Loading...", "Please wait...", false);

}
Activity act = this;
new MenuItemData(act).execute();
new MenuItemData(getActivity()).execute();
    Context context;

    public MenuItemData(Context context) {
        this.context = context;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        pDialog  = ProgressDialog.show(context, "Loading...", "Please wait...", false);

    }
public MenuCategory1() {
userFunctions = new UserFunctions();
setDataToMenu();
}