2016-07-24 33 views
1

MainActivity.java:集片段作爲活動佈局開始

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     if (savedInstanceState == null) { 
      getFragmentManager().beginTransaction() 
        .add(R.id.container, new homePage()) 
        .commit(); 
     } 
    } 
} 

這是我得到的錯誤:

無法解析方法添加(INT等)上添加一行(R.id.container,new homePage())

所以基本上我創建了三個片段和一個活動。我的活動沒有佈局(儘管它顯然有一個佈局頁面,它的ID是容器)。我想在活動啓動時將homePage佈局文件添加到容器,但這似乎不起作用。到目前爲止,我只創建了佈局等,現在我試圖添加java代碼,但我不確定爲什麼這不起作用。

我還沒有編輯任何片段的java代碼,所以它基本上是android studio在創建時添加的代碼。

public class homePage extends Fragment { 

    private OnFragmentInteractionListener mListener; 
    private View view; 

    public homePage() { 
     // Required empty public constructor 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     view = inflater.inflate(R.layout.fragment_home_page, container, false); 
     Button btnLogin = (Button) view.findViewById(R.id.login); 
     btnLogin.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       loginView(); 
      } 
     }); 
     return view; 
    } 

    public static homePage newInstance() { 
     homePage fragment = new homePage(); 
     Bundle args = new Bundle(); 
     return fragment; 
    } 

    public void loginView(){} 

    @Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 
     if (context instanceof OnFragmentInteractionListener) { 
      mListener = (OnFragmentInteractionListener) context; 
     } else { 
      throw new RuntimeException(context.toString() 
        + " must implement OnFragmentInteractionListener"); 
     } 
    } 

    @Override 
    public void onDetach() { 
     super.onDetach(); 
     mListener = null; 
    } 

    /** 
    * This interface must be implemented by activities that contain this 
    * fragment to allow an interaction in this fragment to be communicated 
    * to the activity and potentially other fragments contained in that 
    * activity. 
    * <p/> 
    * See the Android Training lesson <a href= 
    * "http://developer.android.com/training/basics/fragments/communicating.html" 
    * >Communicating with Other Fragments</a> for more information. 
    */ 
    public interface OnFragmentInteractionListener { 
     // TODO: Update argument type and name 
     void onFragmentInteraction(Uri uri); 
    } 
} 
+0

你嘗試在'onCreate'添加這樣的:'如果(getFragmentManager()findFragmentById(android.R.id.content)== NULL){ getFragmentManager()調用BeginTransaction() 。新增(android.R .id.content, new MyFragment())。commit(); }' – Vucko

+0

可能是您擴展的片段類型的問題;支持還是非支持? – Eenvincible

回答

1

這可能是因爲您homeFragment從支持庫(android.support.v4.app.Fragment)擴展了Fragment,因此您的MainActivity應該使用getSupportFragmentManager()代替getFragmentManager()這是android.app.Fragment的一部分。