我正在學習修改Android應用程序我在線購買的源代碼。在某些佈局中已經有AdMob廣告,但我想將它們添加到另一個佈局。我所做的是複製所需的代碼相關文件中的位。
這是修改後的fragment_category.xml
文件不能正確放置admob廣告
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:id="@+id/main_layout"
tools:context=".CategoryFragment">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/container_body" >
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#00ffffff"
android:gravity="center"
android:id="@+id/container_admob"
android:visibility="gone">
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="BANNER"
ads:adUnitId="@string/banner_ad_unit_id">
</com.google.android.gms.ads.AdView>
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/container_items"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_width="match_parent"
android:background="@color/white">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:scrollbars="vertical" />
</android.support.v4.widget.SwipeRefreshLayout>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/message"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
修改CategoryFragment.java
在java文件findViewById
file.only相關位(full CategoryFragment.java file)
public class CategoryFragment extends Fragment implements Constants, SwipeRefreshLayout.OnRefreshListener {
private static final String STATE_LIST = "State Adapter Data";
RecyclerView mRecyclerView;
TextView mMessage;
LinearLayout mContainerAdmob;
SwipeRefreshLayout mItemsContainer;
private ArrayList<Item> itemsList;
private FeedListAdapter itemsAdapter;
private int categoryId = 0;
private int itemId = 0;
private int arrayLength = 0;
private Boolean loadingMore = false;
private Boolean viewMore = false;
private Boolean restore = false;
private String title = "";
int pastVisiblesItems = 0, visibleItemCount = 0, totalItemCount = 0;
public CategoryFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContainerAdmob = (LinearLayout) findViewById(R.id.container_admob);
if (App.getInstance().getAdmob() == ADMOB_ENABLED) {
mContainerAdmob.setVisibility(View.VISIBLE);
AdView mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}
是紅[錯誤 - 無法解析方法findViewById(INT )] fragment_java.xml文件不是沒有顯示任何錯誤
工作文件
我說什麼,
在fragment_category.xml
xmlns:ads="http://schemas.android.com/apk/res-auto"
和
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#00ffffff"
android:gravity="center"
android:id="@+id/container_admob"
android:visibility="gone">
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="BANNER"
ads:adUnitId="@string/banner_ad_unit_id">
</com.google.android.gms.ads.AdView>
中CategoryFragment.java
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
LinearLayout mContainerAdmob;
和
mContainerAdmob = (LinearLayout) findViewById(R.id.container_admob);
if (App.getInstance().getAdmob() == ADMOB_ENABLED) {
mContainerAdmob.setVisibility(View.VISIBLE);
AdView mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}
如果這一切是太亂了,請給我建議的方式來幹這事嘗試教程,但他們每個人都有不同的代碼
你不知道如何在片段中使用findViewById?這已被問及多次回答 –
我真的不知道......我會搜索它,但如果其他佈局有效,那麼爲什麼不呢? –
活動佈局?它的工作原理是在Activity中,其中findViewById是Activity類的一個方法。你不能用'extends Fragment'來替換'extends Activity'並讓事情有效。例如,'fragment_category'似乎並沒有真正用於你的問題 –