2016-08-04 40 views
2

我嘗試以下的代碼:如何打開一個按鈕上的片段單擊從意圖和無意在android中的活動?

Intent in= new Intent(Activity1.this,Fragment.class); 
startactivity(in); 
+1

的方法的

Fragment fragment= new YourFragment(); FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.replace(R.id.fragment_container, fragment); // fragment container id in first parameter is the container(Main layout id) of Activity transaction.addToBackStack(null); // this will manage backstack transaction.commit(); 

樣品實施例沒有說'startFragment'。看看'FragmentManager' –

+1

你根本不使用意圖。 –

回答

4

這不是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(); 
+1

我只是想打開片段,當我點擊按鈕的活動? –

+0

@SunilKumar是的,如果我理解正確。該按鈕可以直接在當前活動中打開片段。 – Bryan

2

寫在你的onCreate或者你的意圖驗證碼:

FragmentManager fm = getSupportFragmentManager(); 
YourFragment fragment = new YourFragment(); 
fm.beginTransaction().add(R.id.main_contenier,fragment).commit(); 
1

片段無法通過意向打開。

你應該使用片段管理器。片段

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(); 
} 
}); 

} 
相關問題