我遇到了一個問題,雖然我一直在嘗試使用replace方法來替換一個片段以使用另一個地圖片段登錄到服務器,但會發生以下情況:新片段(應該是亞馬遜地圖片段)only takes half of the screen。一旦用戶點擊登錄按鈕,它應該變成新的片段(並且我試圖改變那裏的片段,但是我還沒有能夠讓它工作)。亞馬遜地圖片段替換
目前,我從異步任務的onPostExecute方法調用新片段,檢查登錄是否正常工作。這裏就是我所說的交易:
@Override
protected void onPostExecute(Boolean result) {
if (result) { //If true, the server tasks were successful
getFragmentManager()
.beginTransaction()
.replace(R.id.fragment_login_view, createFragment())
.commit();
}
}
下面是第二個片段是我打電話的XML文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="match_parent"
android:layout_width="match_parent">
<fragment xmlns:map="http://schemas.android.com/apk/res-auto"
android:id="@+id/fragment_map"
android:layout_width="match_parent"
android:layout_height="match_parent"
map:amzn_mapType="amzn_normal"
tools:ignore="MissingPrefix"
class="com.amazon.geo.mapsv2.MapFragment" />
</RelativeLayout>
我已經嘗試了一些事情改變這個XML文件,例如因爲列出的所有內容here和here,以及Amazon提供的文檔中列出的幾乎所有內容以及各種在線教程。
我也看過a question for replacing fragments in an Async task,但無濟於事。我知道替換工作在某種程度上是有效的,從我上面張貼的圖片可以看出,但似乎從未佔用整個屏幕。
我的onCreate和onCreateView的地圖片段類是如下:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (isAmazonMapsAvailable()){ //this has always been true
Log.i(TAG, "Amazon maps is available!");
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState){
View v = inflater.inflate(R.layout.fragment_map, container, false);
return v;
}
我已經花了幾個小時,此代碼亂搞,也沒有能夠得到地圖碎片填滿整個屏幕 - 同時仍然顯示地圖。我認爲它必須與我的XML文件有關,因爲我已經能夠將它的部分片段顯示出來,但並不是所有的片段都是正確的。我認爲我正在進行替換,並且由於我的異步任務是嵌套的,替換能夠在那裏工作得很好。
任何幫助或指導將不勝感激!非常感謝!
編輯
這裏的login_fragment XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_login_view"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="match_parent">
<TextView
android:id="@+id/userNameHint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/user_name"
android:paddingTop="25dp"
android:paddingBottom="25dp"
android:paddingStart="24dp"
android:paddingEnd="24dp"/>
<TextView
android:id="@+id/passwordHint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/password"
android:paddingTop="24dp"
android:paddingBottom="25dp"
android:paddingStart="24dp"
android:paddingEnd="24dp"/>
<TextView
android:id="@+id/serverHostHint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/server_host"
android:paddingTop="24dp"
android:paddingBottom="25dp"
android:paddingStart="24dp"
android:paddingEnd="24dp"/>
<TextView
android:id="@+id/serverPortHint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/server_port"
android:paddingTop="24dp"
android:paddingBottom="25dp"
android:paddingStart="24dp"
android:paddingEnd="24dp"/>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<EditText
android:id="@+id/userNameEntry"
android:layout_width="150dp"
android:layout_height="match_parent"
android:inputType="text"
android:paddingBottom="22dp"/>
<EditText
android:id="@+id/passwordEntry"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:ems="10"
android:paddingTop="22dp"
android:paddingBottom="22dp"
android:allowUndo="true"/>
<EditText
android:id="@+id/serverHostEntry"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:inputType="text"
android:paddingTop="22dp"
android:paddingBottom="22dp"/>
<EditText
android:id="@+id/serverPortEntry"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:inputType="text"
android:paddingTop="22dp"
android:paddingBottom="22dp"/>
</LinearLayout>
<Button
android:id="@+id/signInButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sign_in"
android:layout_gravity="center_vertical" />
</LinearLayout>
R.id.fragment_login_view是什麼樣的XML? 同樣在你的用於Map Map的XML中,RelativeLayout很可能是多餘的,可以刪除。 – Darwind
@Darwind我在XML文件中添加了登錄片段。儘管你對RelativeLayout是正確的。我不知道爲什麼我在那裏。我從代碼中刪除它並重新啓動它,但我仍然遇到同樣的問題。 –