Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.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 我无法从此片段活动中使用此方法_Android_Android Activity_Android Fragmentactivity_Layout Inflater - Fatal编程技术网

Android 我无法从此片段活动中使用此方法

Android 我无法从此片段活动中使用此方法,android,android-activity,android-fragmentactivity,layout-inflater,Android,Android Activity,Android Fragmentactivity,Layout Inflater,LoginPatternFragment.java FATAL EXCEPTION: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference at android.view.LayoutInflater

LoginPatternFragment.java

FATAL EXCEPTION:

java.lang.NullPointerException: Attempt to invoke virtual method
   'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a
   null object reference at android.view.LayoutInflater.from(LayoutInflater.java:219)
   at com.Infoniq.restaurantapp.Fragment.HomepageFragment.Alertdailg(HomepageFragment.java:148) 
   at com.Infoniq.restaurantapp.Fragment.LoginPatternFragment$1.run(LoginPatternFragment.java:116)
if (response.contains("Successfully")) {
    final HomepageFragment hpf=new HomepageFragment();
    hpf.Alertdailg();
}
HomepageFragment.java

FATAL EXCEPTION:

java.lang.NullPointerException: Attempt to invoke virtual method
   'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a
   null object reference at android.view.LayoutInflater.from(LayoutInflater.java:219)
   at com.Infoniq.restaurantapp.Fragment.HomepageFragment.Alertdailg(HomepageFragment.java:148) 
   at com.Infoniq.restaurantapp.Fragment.LoginPatternFragment$1.run(LoginPatternFragment.java:116)
if (response.contains("Successfully")) {
    final HomepageFragment hpf=new HomepageFragment();
    hpf.Alertdailg();
}

在HomepageFragment附加到“活动”之前,您试图在HomepageFragment中调用
getActivity()

您需要先使用FragmentManager连接它,如下所示:

public void Alertdailg() {
    LayoutInflater layoutInflater = LayoutInflater.from(getActivity());
    final View prmpview = layoutInflater.inflate(R.layout.billmode_alert, null);
    final AlertDialog alertDialog = new AlertDialog.Builder(getActivity()).create();
}

Fragment
对象的生命周期与显示它的
活动相关联。调用
new
时,您刚刚创建了对象,但根本没有附加它。您需要使用
碎片管理器将其添加到
活动中

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager
        .beginTransaction();
HomepageFragment hpf = new HomepageFragment();
fragmentTransaction.add(R.id.container, hpf);
fragmentTransaction.commit();
hpf.Alertdailg()

但是,此时仍然无法调用
Alertdailg()
方法,因为
片段还没有经历其生命周期。如果您总是希望在第一次显示
片段时显示此对话框,则需要在
片段的
onResume()回调中执行此操作。此时将附加
活动
。您还可以在
片段的
onAttach()
方法中获得
活动。在执行回调之前,不会附加
片段。

您需要父活动上下文的引用。首先,您需要创建一个局部上下文变量

FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
HomepageFragment hpf = new HomepageFragment();
ft.add(R.id.container, hpf);
ft.commit();
然后在片段附加到FragmentActivity时获取上下文的引用。请参阅代码

private Context context;
现在将本地上下文变量传递给AlertDialog(上下文)方法并使用它