我對Android很新,所以這可能有一個明顯的答案,但我似乎無法找到它。Android:爲活動添加片段
我在寫一個計算器應用程序的版本。我想這樣做是爲了當用戶點擊其中一個按鈕時,這會啓動一個片段(使用更多的按鈕,然後可以用於更多的輸入)。
片段代碼如下:
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class VariableMenu extends Fragment {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment, container, false);
}
}
使用一個XML佈局如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/Bx"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="X"
android:onClick="onButtonClicked"/>
<Button
android:id="@+id/By"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/Bx"
android:layout_alignTop="@id/Bx"
android:text="Y"
android:onClick="onButtonClicked"/>
<Button
android:id="@+id/Bz"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/By"
android:layout_alignTop="@id/By"
android:text="Z"
android:onClick="onButtonClicked"/>
</RelativeLayout>
(我知道我不應該使用硬編碼字符串中,但我會修復,一旦我得到的東西運行)
我試着讓它使用ontouch方法的激活按鈕,像這樣的fragmenttransaction添加:
public void onFragmentActivated(View v) {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
VariableMenu fragment = new VariableMenu();
fragmentTransaction.add(R.layout.main, fragment);
fragmentTransaction.commit();
}
但是,這給出了一個錯誤,說有沒有找到ID:...的視圖(主)爲片段VariableMenu。「
於是我主要的XML文件中提出了看法吧:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
(Irrelevant things)
<fragment
android:id="@+id/Fragment"
android:name="calculator.app.VariableMenu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/B1"/>
(Irrelevant things)
</RelativeLayout>
,但是這導致在該片段中,一旦在那裏的活動創建(和的setContentView(R.layout.main) ;跑)。
有沒有一種簡單的方法來編程地添加和刪除一個UI的片段到一個活動?
+1。 @Spencer還有,如果你的片段可以作爲一個單獨的活動,你可以改變它來擴展FragmentActivity,並像普通活動那樣對待它。 – Joe
非常感謝你,這非常完美。我不認爲FragmentActivity在這種情況下會起作用,但我會在將來考慮這個選項。 – Spencer