2017-08-17 20 views
-1

フラグメントがデフォルトで表示されますが、このボタンをクリックするまで、フラグメントを非表示にする必要がありました。私が経験している問題は、このボタンをクリックするとフラグメントが表示されないことです。私は断片になると完全な初心者です。私の主な活動でフラグメントはonButtonClickで表示されません

マイコード:

package com.example.julian.tutorial_fragment; 

import android.support.v4.app.FragmentManager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 

public class MainActivity extends AppCompatActivity implements TopSectionFragment.TopSectionListener{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     View frag = findViewById(R.id.fragment3); 
     frag.setVisibility(View.GONE); 
    } 

    //This gets called by the TopFragment when the user clicks the button 
    @Override 
    public void createMeme(String top, String bottom) { 
     BottomPictureFragment bottomFragment = (BottomPictureFragment)getSupportFragmentManager().findFragmentById(R.id.fragment2); 
     bottomFragment.setMemeText(top, bottom); 
    } 
//this is the onButtonClick 
    public void sample(View view) { 
     android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager(); 
     android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
     Fragment_Search hello = new Fragment_Search(); 
     fragmentTransaction.add(R.id.fragment3, hello, "HELLO"); 
     fragmentTransaction.commit(); 
    } 
} 

マイFragment_Searchにおけるコード:

package com.example.julian.tutorial_fragment; 

import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

/** 
* Created by Julian on 8/17/2017. 
*/ 

public class Fragment_Search extends Fragment { 

    public interface Fragment_SearchInterface { 


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

     return view; 
    } 
} 

マイactivity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.julian.tutorial_fragment.MainActivity"> 

    <RelativeLayout 
     android:layout_width="377dp" 
     android:layout_height="498dp" 
     tools:layout_editor_absoluteY="8dp" 
     tools:layout_editor_absoluteX="8dp"> 

     <fragment 
      android:id="@+id/fragment2" 
      android:name="com.example.julian.tutorial_fragment.BottomPictureFragment" 
      android:layout_width="250dp" 
      android:layout_height="250dp" 
      tools:layout="@layout/bottom_picture_fragment" 
      tools:layout_editor_absoluteX="67dp" 
      tools:layout_editor_absoluteY="223dp" 
      android:layout_marginBottom="30dp" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" /> 

     <fragment 
      android:id="@+id/fragment" 
      android:name="com.example.julian.tutorial_fragment.TopSectionFragment" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      tools:layout="@layout/top_section_fragment" 
      tools:layout_editor_absoluteX="42dp" 
      tools:layout_editor_absoluteY="16dp" 
      android:layout_alignParentTop="true" 
      android:layout_centerHorizontal="true" /> 

     <Button 
      android:id="@+id/button2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_above="@+id/fragment2" 
      android:layout_alignStart="@+id/fragment" 
      android:text="Button" 
      android:onClick="sample"/> 

     <fragment 
      android:id="@+id/fragment3" 
      android:name="com.example.julian.tutorial_fragment.Fragment_Search" 
      android:layout_width="300dp" 
      android:layout_height="300dp" 
      android:layout_below="@+id/button2" 
      android:layout_marginTop="92dp" 
      android:layout_toStartOf="@+id/button2" /> 
    </RelativeLayout> 

</android.support.constraint.ConstraintLayout> 
+1

あなたのactivity_main.xmlを表示 –

+0

タブレットで作業する場合を除き、同じレイアウトで同時に3つの(!)フラグメントを使用する必要はありません。私はあなたが必要に応じて別のものに置き換える1つだけのフラグメントを使用するようにレイアウトを考え直すべきだと思います。さらに、ConstraintLayoutとRelativeLayoutがContstraintLayoutに単独であるため、ConstraintLayoutとRelativeLayoutは必要ありません – Eselfar

+0

他の2つはチュートリアルから得たもので、入力したデータを読み込むかテストするために使用しましたそれは2番目の断片のテキストビューにあります。私はそれが働いていることを知っていた。私は、このボタンをクリックすることでのみ表示されるフラグメントを使用してみたかったので、メインアクティビティの上に表示されます。しかし、そのような断片を示すチュートリアルは表示されません。私は1つを見ましたが、それはSupportMapFragmentを使用しています、それと同様のチュートリアルを持っている他のものを見つけることができません。私は –

答えて

0

変更あなたのサンプル関数と、この

を追加
FragmentManager fragmentManager = getSupportFragmentManager(); 

    fragmentManager.beginTransaction() 
      .replace(R.id.your_layout, new Fragment_Search()) 
      .addToBackStack(null) 
      .commit(); 
+0

それはまだ表示されません。<でframeLayout アンドロイド:ID = "@ + ID/fragment3" アンドロイド:layout_width = "match_parent" アンドロイド:layout_height = "match_parent" ツール:layout_editor_absoluteX = "8DP" ツール:layout_editor_absoluteY = "8DP" アンドロイド:背景=」 @ color/colorPrimary "> ボタンをクリックしても青い背景が表示されません。 –

+0

サンプルボタンをクリックし、XMLから第三の断片を削除し、でframeLayoutを追加し、私は第三の断片を取り出して、このコードを含まフレームレイアウトを追加 – nKalai

+0

を交換することでframeLayoutのidを渡すとき –

関連する問題