Super.onActivityCreated 和 getview 不能与 ActionBarActivity 一起使用
Super.onActivityCreated and getview are not working with ActionBarActivity
我想使用以下代码向我的应用程序添加一个 adFragment:
public class AdFragment extends ActionBarActivity {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_ad, container, false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
AdView mAdView = (AdView) getView().findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}
}
问题是 Android Studio 说
无法解析方法 onActivityCreated(Android.os.Bundle) super.OnActivityCreated...第
行
和
无法为下一行解析方法 getView()。
我试过如果把ActionBarActivity换成Fragment是没有问题的但是基于
http://developer.android.com/training/basics/fragments/creating.html
ActionBarActivity 应该可以工作。
有人知道可能的解决方案吗?
提前感谢您的帮助!
以下将在 Fragment
.
中工作
任何与膨胀布局相关的代码都应该在 onViewCreated
中。 (您想要视图而不是 activity,对吗?)onViewCreated
在 onCreateView
之后调用。 view
参数是你膨胀的参数。
AdView mAdView;
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mAdView = (AdView) view.findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}
编辑:根据新事件
以下将在 Activity
(或 FragmentActivity
或 ActionBarActivity
)内工作。
AdView mAdView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_layout); // the layout with this id will be inflated
mAdView = (AdView) findViewById(R.is.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
// ...
}
编辑 2
我不知道广告视图的工作原理。也许您不必每次都加载广告,因为它会记住。尝试这样做:
if (savedInstanceState == null) {
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}
我想使用以下代码向我的应用程序添加一个 adFragment:
public class AdFragment extends ActionBarActivity {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_ad, container, false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
AdView mAdView = (AdView) getView().findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}
}
问题是 Android Studio 说
无法解析方法 onActivityCreated(Android.os.Bundle) super.OnActivityCreated...第
行和
无法为下一行解析方法 getView()。
我试过如果把ActionBarActivity换成Fragment是没有问题的但是基于 http://developer.android.com/training/basics/fragments/creating.html
ActionBarActivity 应该可以工作。
有人知道可能的解决方案吗?
提前感谢您的帮助!
以下将在 Fragment
.
任何与膨胀布局相关的代码都应该在 onViewCreated
中。 (您想要视图而不是 activity,对吗?)onViewCreated
在 onCreateView
之后调用。 view
参数是你膨胀的参数。
AdView mAdView;
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mAdView = (AdView) view.findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}
编辑:根据新事件
以下将在 Activity
(或 FragmentActivity
或 ActionBarActivity
)内工作。
AdView mAdView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_layout); // the layout with this id will be inflated
mAdView = (AdView) findViewById(R.is.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
// ...
}
编辑 2
我不知道广告视图的工作原理。也许您不必每次都加载广告,因为它会记住。尝试这样做:
if (savedInstanceState == null) {
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}