2017-02-03 13 views
0

これについてのすべての提案を試しました。すべての答えは、活動から断片を変更していますが、ここで私の質問の違いです。私は、最初の断片から別の断片に変更しようとしています。助けてください。ANDROIDフラグメントは新しいフラグメントを追加または置換できません

私はダイナミックbuttons.please画像見つけ含むフラグメント持つ[を![ここに画像の説明を入力] [1] [1]

ユーザーが、私はいくつかのスタックを表示するボタンのいずれかをクリックした場合画像を見る[2] [2]

これは私の必要条件です。私の問題は、私は

show_dash_board_activity.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/fragmentContainer" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/slidetwo" 
    xmlns:tools="http://schemas.android.com/tools" > 


</FrameLayout> 

ナビゲーション引き出しが完璧な作業である

ShowDashBoardActivity.javaをShowDashBoardActivityとして下部のナビゲーションバーの名前が含まれている1つの活性を有しています。 DashBoardTaskBubble.javaで、それは私が1

DashBoardTaskBubble.java

import android.content.res.ColorStateList; 
import android.graphics.Color; 
import android.os.Build; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v4.view.ViewCompat; 
import android.support.v7.widget.AppCompatButton; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.ViewTreeObserver; 
import android.widget.Button; 
import android.widget.LinearLayout; 
import android.widget.RelativeLayout; 
import android.widget.TextView; 

import com.panenviron.R; 

import java.util.ArrayList; 
import java.util.List; 
import static android.R.attr.tint; 

public class DashBoardTaskBubble extends Fragment { 
    private static final String STARTING_TEXT = "Four Buttons Bottom Navigation"; 
    public DashBoardTaskBubble() { 
} 

    public static DashBoardTaskBubble newInstance(String text) { 
     Bundle args = new Bundle(); 
     args.putString(STARTING_TEXT, text); 

     DashBoardTaskBubble dashBoardTaskBubble = new DashBoardTaskBubble(); 
     dashBoardTaskBubble.setArguments(args); 

     return dashBoardTaskBubble; 
    } 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_task_bubble, container, false); 
     final RelativeLayout workViewLayout = (RelativeLayout)view.findViewById(R.id.workView); 
     int iNumberOfButtons = 6; // no of bubble create function to fetch no of bubble from db 
     // create a function to get color from db now give static 
     String[] colourList = new String[] { "#ffaa00","#32CD32","#0000FF"}; 
     Button[] dynamicButtons = new Button[iNumberOfButtons]; 
     List<String> tempColouersList= new ArrayList<String>(); 
     for (int i = 0; i < iNumberOfButtons; i++) { 
      dynamicButtons[i] = new Button(getActivity()); 
      dynamicButtons[i].setText("+"+i+5); 
      dynamicButtons[i].setId(i); 
      dynamicButtons[i].setTextSize(15.0f); 
      dynamicButtons[i].setBackgroundResource(R.drawable.round_button); 

      if(i==0){ 
       RelativeLayout.LayoutParams paramsButton = 
         new RelativeLayout.LayoutParams(350,350); 
       paramsButton.setMargins(50,0,0,0); 
       dynamicButtons[0].setLayoutParams(paramsButton); 
       tempColouersList.add(colourList[0]); 
      } else if(i==1){ 
       RelativeLayout.LayoutParams paramsButton2 = 
         new RelativeLayout.LayoutParams(350,350); 
       paramsButton2.setMargins(700,10,0,0); 
       dynamicButtons[1].setLayoutParams(paramsButton2); 
       tempColouersList.add(colourList[1]); 
      } else if(i==2){ 
       RelativeLayout.LayoutParams paramsButton3 = 
         new RelativeLayout.LayoutParams(350,350); 
       paramsButton3.setMargins(400,250,0,0); 
       dynamicButtons[2].setLayoutParams(paramsButton3); 
       tempColouersList.add(colourList[2]); 
      } else if(i==3){ 
       RelativeLayout.LayoutParams paramsButton4 = 
         new RelativeLayout.LayoutParams(350,350); 
       paramsButton4.setMargins(50,450,0,0); 
       dynamicButtons[3].setLayoutParams(paramsButton4); 
       tempColouersList.add(colourList[1]); 
      } else if(i==4){ 
       RelativeLayout.LayoutParams paramsButton5 = 
         new RelativeLayout.LayoutParams(350,350); 
       paramsButton5.setMargins(700,500,0,0); 
       dynamicButtons[4].setLayoutParams(paramsButton5); 
       tempColouersList.add(colourList[2]); 
      }else if(i==5){ 
       RelativeLayout.LayoutParams paramsButton6 = 
         new RelativeLayout.LayoutParams(350,350); 
       paramsButton6.setMargins(350,700,0,0); 
       dynamicButtons[5].setLayoutParams(paramsButton6); 
       tempColouersList.add(colourList[0]); 
      } 

      ColorStateList tint = new ColorStateList(new int[][]{new int[0]}, new int[]{Color.parseColor(tempColouersList.get(i)) }); 
      if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP && dynamicButtons[i] instanceof AppCompatButton) { 
       ((AppCompatButton) dynamicButtons[i]).setSupportBackgroundTintList(tint); 
      } else { 
       ViewCompat.setBackgroundTintList(dynamicButtons[i], tint); 
      } 
      dynamicButtons[i].setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        try { 
         Log.e("im on","button clik"); 

        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
       } 


      }); 
      workViewLayout.addView(dynamicButtons[i]); // dynamicButtonsLinearLayout is the container of the buttons 
     } 
     return view; 
    } 

    public void replaceFragments() { 
     Log.e("im on","replaceFragments"); 
     //Fragment fragment = null; 
     try { 
      //fragment = (Fragment) TaskCardListShow.newInstance(); 
      /*TaskCardListShow nextFrag= new TaskCardListShow(); 
      this.getFragmentManager().beginTransaction() 
        .replace(R.id.fragmentContainer, nextFrag) 
        .addToBackStack(null) 
        .commit();*/ 

      FragmentManager mFragmentManager = getFragmentManager(); 
      FragmentTransaction mFragmentTransaction = https://i.stack.imgur.com/J75iJ.pngmFragmentManager.beginTransaction(); 
      TaskCardListShow mFragment = new TaskCardListShow(); 
      //mFragmentTransaction.replace(R.id.fragmentContainer, mFragment); 
      mFragmentTransaction.add(R.id.fragmentContainer, mFragment); 
      mFragmentTransaction.addToBackStack(null); 
      mFragmentTransaction.commit(); 
     } catch (Exception e) 
     { e.printStackTrace(); } 
     // Insert the fragment by replacing any existing fragment FragmentManager 
     // fragmentManager = getSupportFragmentManager(); 
     // fragmentManager.beginTransaction().replace(R.id.flContent, fragment).commit(); 
     } 
} 

fragment_task_bubble.xml

<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:gravity="center_horizontal" 
    android:orientation="vertical" 
    android:background="@drawable/slidetwo"> 

    <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="0dp" 
     android:layout_weight="12" 
     android:background="@color/white"> 
    </LinearLayout> 

    <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="0dp" 
     android:layout_weight="88" 
     android:orientation="vertical" 
     android:background="@color/white"> 
     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:layout_marginTop="3dp" 

      /> 
     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="5dp" 
      android:layout_gravity="center_horizontal" 
      android:layout_marginBottom="20dp"> 
     <View 
      android:layout_width="98dp" 
      android:gravity="center_horizontal" 
      android:layout_height="4dp" 
      android:background="@android:color/holo_red_dark" 
      android:id="@+id/normalViewSeparator" 
      /> 
     </LinearLayout> 

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="30" 
      android:orientation="vertical" 
      android:id="@+id/workView" 
      android:background="@color/white"> 



     </RelativeLayout> 

    </LinearLayout> 

</LinearLayout> 

バブルの描画がある絵のように表示するために、動的バブルを描いていますフラグメントでありますまた、完璧に動作します。ここでは、ユーザーがボタンをクリックしたようなものを追加しようとしています。のようなスタックカードを表示したい場合2

タスクカードを断片的に表示することを考えています。ある断片を別の断片にナビゲートする方法はわかりません。

TaskCardListShow.java FRAGMENT

package com.panenviron.fragments; 

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

import com.panenviron.R; 

public class TaskCardListShow extends Fragment { 

    public TaskCardListShow() { 
    } 
    public static TaskCardListShow newInstance() { 

     TaskCardListShow _TaskCardListShow = new TaskCardListShow(); 

     return _TaskCardListShow; 
    } 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.task_card_list_show, container, false); 
     Log.e("im on","TaskCardListShow"); 

     return view; 
    } 

} 

task_card_list_show.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/fragment_task_card_list_show" 
    style="@style/Animation.AppCompat.Dialog"> 

    <TextView 
     android:text="Im on task fragment" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/textView" 
     android:layout_weight="1" /> 
</LinearLayout> 

iが上記replaceFragments()カスタム関数を試みました。しかし、それはフラグメントを置き換えますが、最初のフラグメントを削除していません。どのようにこれを行うことができます。

答えて

2

ネイティブのfragmentmanager - Activity.getFragmentManager()でサポートフラグメント(android.support.v4.app.Fragment)を使用しています。代わりに、あなたはfragmentmanager - AppCompatActivity.getSupportFragmentManager()を使用しなければなりません。

私は本当にアンドロイドツールがこの厄介な状況をよりうまく処理したいと思っています。

+0

しかし、私はそのメソッドをフラグメントでしか呼び出さなかったので、getsupportfragmentは私のケースでは機能しません。だから、上記のコードを見てください。私はフラグメント内のフラグメントにアクセスしようとしています。 –

2

getFragmentManagerの代わりにgetActivity()。getSupportFragmentManager()をコールする必要があります。このように、フラグメントトランザクションでこの "getActivity()。getSupportFragmentManager()。beginTransaction()"を与えなければなりません。その後、あなたは既に完了したように置き換えることができます

関連する問題