2017-09-13 38 views
-1

アクティビティにフラグメントを追加しようとしましたが、表示されません。フラグメントがアクティビティに表示されない

public class MainActivity extends AppCompatActivity { 
private static final String TAG = MainActivity.class.getSimpleName(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    WeatherFragment mainFragment = new WeatherFragment(); 
    getFragmentManager() 
      .beginTransaction() 
      .add(R.id.main_weather_container, mainFragment) 
      .commit(); 
    } 
} 

そして、私の断片であり:

public class WeatherFragment extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     super.onCreateView(inflater, container, savedInstanceState); 
     boolean isAttachedToParent = false; 
     View inflatedView = inflater.inflate(R.layout.main_weather_fragment, container, isAttachedToParent); 
    return inflatedView; 
} 
} 

R.id.main_weather_container - でframeLayoutは私のMainActivityに。
R.layout.main_weather_fragment - フラグメントのレイアウト
何が間違っていますか?
私はFragmentActivity + v4サポートフラグメントとfragmentSupportManagerを使用しようとしましたが、何の違いもありませんでした。

MainActivityのXML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <FrameLayout 
     android:id="@+id/main_weather_container" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:padding="@dimen/padding_16_dp" /> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/words_recycler_view" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="3" /> 

</LinearLayout> 

更新:フラグメントが表示されなかった理由の名前空間:問題は、フラグメントのトランザクションではなかったか、何でも、私はツールを使用しました。 AppCompatActivityで 。私が見ることができるように、あなたがAppCompatActivityを使用しますがgetFragmentManagerを使用している

+0

フラグメント番号 –

+1

を追加したいxmlを表示するには、 'getFragmentManager()'の代わりに 'getSupportFragmentManager()'を使用してください。 –

+0

サポートされている断片マネージャーが助けてくれないと言われました –

答えて

0

:(そのことについて申し訳ありませんが、あなたがあなたのWeatherFragmentandroid.support.v4.app.Fragment;

を拡張する必要があります getSupportFragmentManager()ではなく getFragmentManager()

public class MainActivity extends AppCompatActivity { 
private static final String TAG = MainActivity.class.getSimpleName(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    WeatherFragment mainFragment = new WeatherFragment(); 
    getSupportFragmentManager() 
      .beginTransaction() 
      .add(R.id.main_weather_container, mainFragment) 
      .commit(); 
    } 
} 

を使用する必要があります

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:weightSum="4" 
    android:orientation="vertical"> 

    <FrameLayout 
     android:id="@+id/main_weather_container" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:padding="@dimen/padding_16_dp" /> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/words_recycler_view" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="3" /> 

</LinearLayout> 

親レイアウトにWeightSumが追加されました

+0

(私はgetSupportFragmentManagerを使用)、私はすでに –

+1

とあなたの断片が、それはサポートクラスを拡張された支持フラグメントクラス –

+0

を拡張されていることを確認し、サポートフラグメントマネージャ、それを試してみましたが、それはまだ –

0

フラグメントのクラスで

Fragment fragment = Video_fragment.newInstance(); 
       FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
       transaction.replace(R.id.framecontainer, fragment).commit(); 

あなたの活動コールフラグメント.INこの方法を試してみてください。

public class Video_fragment extends Fragment{ 
    View view; 

    public static Fragment newInstance() { 
     Video_fragment fragment = new Video_fragment(); 
     return fragment; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     view= inflater.inflate(R.layout.video_frag, container, false); 
     return view; 
    } 
} 
0
public class WeatherFragment extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View inflatedView = inflater.inflate(R.layout.main_weather_fragment, null, false); 
    return inflatedView; 
    } 
} 
0

WeatherFragmentFragmentのインスタンスを作成します。

MainActivityでのご Activityインサイド
public static WeatherFragment newInstance() { 
    Bundle args = new Bundle(); 
    WeatherFragment weatherFragment = new WeatherFragment(); 
    weatherFragment.setArguments(args); 
    return weatherFragment; 
} 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.fragment_layout, container, false); 
} 

を:

@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    WeatherFragment weatherFragment = WeatherFragment.newInstance(); 
    getSupportFragmentManager() 
      .beginTransaction() 
      .replace(R.id.flContainerId, weatherFragment) 
      .commit(); 
} 

あなたのレイアウトファイルは次のようになります。

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/flContainerId"/> 
関連する問題