我嘗試以下的代碼:如何打開一個按鈕上的片段單擊從意圖和無意在android中的活動?
Intent in= new Intent(Activity1.this,Fragment.class);
startactivity(in);
我嘗試以下的代碼:如何打開一個按鈕上的片段單擊從意圖和無意在android中的活動?
Intent in= new Intent(Activity1.this,Fragment.class);
startactivity(in);
這不是how fragments work,片段必須附加到Activity
。要獲得您想要的效果,您必須啓動一個新的Activity
,其中包含您希望顯示的片段,或在當前的Activity
中顯示新的片段。
爲了決定採取哪種方法,我會考慮如何讓Fragment
影響界面的導航。如果您希望用戶能夠使用返回按鈕返回到上一個視圖,則應該啓動新的Activity
。否則,您應該用新的Fragment
替換當前的Activity
中的視圖。
雖然,它是可以將Fragment
添加到後退堆棧,我只會嘗試這樣做,如果你有信心用自己的用戶界面的結構。
要在當前Activity
展現出新的片段,您可以使用一個FragmentTransaction
:
Fragment fragment = CustomFragment.newInstance();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.container_layout, fragment).commit();
我只是想打開片段,當我點擊按鈕的活動? –
@SunilKumar是的,如果我理解正確。該按鈕可以直接在當前活動中打開片段。 – Bryan
寫在你的onCreate或者你的意圖驗證碼:
FragmentManager fm = getSupportFragmentManager();
YourFragment fragment = new YourFragment();
fm.beginTransaction().add(R.id.main_contenier,fragment).commit();
片段無法通過意向打開。
你應該使用片段管理器。片段
public class MyFragment extends Fragment implements View.OnClickListener {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view= inflater.inflate(R.layout.fragment_my, container, false);
Button button1= (Button) view.findViewById(R.id.button1_Id);
Button button2= (Button) view.findViewById(R.id.button2_Id);
return view;
}
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Fragment fragment= new YourFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, fragment); // fragmen container id in first parameter is the container(Main layout id) of Activity
transaction.addToBackStack(null); // this will manage backstack
transaction.commit();
}
});
}
的方法的
樣品實施例沒有說'startFragment'。看看'FragmentManager' –
你根本不使用意圖。 –