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)
LoginPatternFragment.java
if (response.contains("Successfully")) {
final HomepageFragment hpf=new HomepageFragment();
hpf.Alertdailg();
}
HomepageFragment.java
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();
}
答案 0 :(得分:0)
您在关联到活动之前尝试在HomepageFragment中调用getActivity()
。
您需要先使用FragmentManager附加它,如下所示:
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
HomepageFragment hpf = new HomepageFragment();
fragmentTransaction.add(R.id.container, hpf);
fragmentTransaction.commit();
hpf.Alertdailg()
答案 1 :(得分:0)
Fragment
个对象的生命周期与显示它的Activity
相关联。当您致电new
时,您刚刚创建了该对象,但根本没有附加它。您需要使用Activity
:
FragmentManager
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
HomepageFragment hpf = new HomepageFragment();
ft.add(R.id.container, hpf);
ft.commit();
但是,此时您仍然无法调用Alertdailg()
方法,因为Fragment
尚未完成其生命周期。如果您希望在首次显示Fragment
时显示此对话框,则需要在onResume()
的{{1}}回调中执行此操作。届时Fragment
将被附加。您还可以在Activity
的{{1}}方法中获取Activity
。在执行回调之前,onAttach()
未附加。
答案 2 :(得分:0)
您需要父活动上下文的引用。首先,您需要创建一个本地上下文变量。
$syslogInfo
然后在片段附加到FragmentActivity时获取上下文的引用。见代码。
my $string_to_find = <$keywordInfo>;
chomp $string_to_find;
# Now use $string_to_find in your regex.
现在将本地上下文变量传递给AlertDialog(Context context)方法并使用它。