我想使用以下代码将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说明了
无法为super.OnActivityCreated解析onActivityCreated(Android.os.Bundle)方法
和
无法为下一行解析方法getView()。
我已经尝试过,如果我将ActionBarActivity替换为Fragment,则没有问题,但基于 http://developer.android.com/training/basics/fragments/creating.html
ActionBarActivity应该有效。
有没有人对可能的解决方案有任何想法?
提前感谢您的帮助!
答案 0 :(得分:1)
以下内容适用于Fragment
。
与膨胀布局相关的任何代码都应在onViewCreated
中。 (您希望视图不是活动,对吗?)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);
}