2014-04-01 96 views
0

我是Android開發中的新手。我創建了一個片段Activity和一個片段(通過MainFragment的名稱),並且當我將MainFragment類的一個實例添加到活動時,它開始在下面的添加中突出顯示的行上顯示錯誤。任何人都可以請幫忙。謝謝 !如何在片段活動中使用片段

MainActivity.java

包com.vitarkasolutions.fb_smsandcallreader;

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 

public class MainActivity extends FragmentActivity { 
    private MainFragment mainFragment; 
    private static final String TAG = "MainFragment"; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     if (savedInstanceState == null) { 

      mainFragment = new MainFragment(); 
      getSupportFragmentManager() 
      .beginTransaction() 
      **.add(android.R.id.content, mainFragment)** 
      .commit(); 
     } else { 

      **mainFragment = (MainFragment) getSupportFragmentManager().findFragmentById(android.R.id.content);** 
     } 
    } 

} 
+0

看起來像其錯誤輸入的情況。檢查編輯的答案 – Raghunandan

回答

0

您需要更改這個

import android.app.Fragment; 

import android.support.v4.app.Fragment; 

既然你延長FragmentActivity確保您的進口MainFragment是從支持庫。

您正在將Fragment添加到ViewGroup(如FrameLayout)的容器中。

add(android.R.id.content, mainFragment) 

android.R.id.content是容器的id。

http://developer.android.com/reference/android/R.id.html#content

從Android框架中使用

public static final int content 

Added in API level 1 
Constant Value: 16908290 (0x01020002) 

你不需要這個

mainFragment = (MainFragment) getSupportFragmentManager().findFragmentById(android.R.id.content); 

通常你會在我們的XML有ViewGroup

標識向其中添加/ repalce片段

例如:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/container" // i defined own id 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.test.MainActivity" 
    /> 

然後

public class MainActivity extends FragmentActivity { 
private MainFragment mainFragment; 
private static final String TAG = "MainFragment"; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    if (savedInstanceState == null) { 

     mainFragment = new MainFragment(); 
     getSupportFragmentManager() 
     .beginTransaction() 
     .add(container, mainFragment) // use the id of the container 
     .commit(); 
    } 
}