2016-01-16 3 views
0

Я хочу показать гистограмму в моей деятельности во фрагменте, но он показывает проблему раздувания. Итак, я изменил свой Activity на FragmentActivity, с которым работал мое приложение, но выход части фрагмента не отображается.Фрагмент с обоими действиями и FragmentActivity не работает

Вот мой код я не могу узнать, что ошибка, которую я сделал:

MainActivity:

public class MainActivity extends Activity { 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
} 

activity_main.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:orientation="vertical" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/hello_world" /> 
    <fragment 
      android:id="@+id/fghis" 
      android:layout_width="match_parent" 
      android:layout_height="100dp" 
      class="com.anu.actualdemobargraph.HistoryFrag" /> 
</LinearLayout> 

HistoryFrag:

import java.util.ArrayList; 

import android.graphics.Color; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

import com.echo.holographlibrary.Bar; 
import com.echo.holographlibrary.BarGraph; 
import com.echo.holographlibrary.BarGraph.OnBarClickedListener; 

public class HistoryFrag extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.historyfrag, container,false); 
     BarGraph g = (BarGraph)view.findViewById(R.id.bargraph); 
     ArrayList<Bar> points = new ArrayList<Bar>(); 
     Bar d = new Bar(); 
     d.setColor(Color.parseColor("#c6c6c6")); 
     d.setName("Test1"); 
     d.setValue(10); 
     Bar d2 = new Bar(); 
     d2.setColor(Color.parseColor("#c6c6c6")); 
     d2.setName("Test2"); 
     d2.setValue(20); 
     Bar d4 = new Bar(); 
     d4.setColor(Color.parseColor("#c6c6c6")); 
     d4.setName("Test2"); 
     d4.setValue(20); 
     Bar d5 = new Bar(); 
     d5.setColor(Color.parseColor("#FFBB33")); 
     d5.setName("Test2"); 
     d5.setValue(20); 
     Bar d6 = new Bar(); 
     d6.setColor(Color.parseColor("#c6c6c6")); 
     d6.setName("Test2"); 
     d6.setValue(20); 
     Bar d7 = new Bar(); 
     d7.setColor(Color.parseColor("#c6c6c6")); 
     d7.setName("Test2"); 
     d7.setValue(20); 
     Bar d8 = new Bar(); 
     d8.setColor(Color.parseColor("#c6c6c6")); 
     d8.setName("Test2"); 
     d8.setValue(20); 
     Bar d3 = new Bar(); 
     d3.setColor(Color.parseColor("#c6c6c6")); 
     d3.setName("Test3"); 
     d3.setValue(50); 
//  d3.setStackedBar(true); 
//  d3.AddStackValue(new BarStackSegment(2, Color.parseColor("#FFBB33"))); 
//  d3.AddStackValue(new BarStackSegment(4, Color.RED)); 
     points.add(d); 
     points.add(d2); 
     points.add(d3); 
     points.add(d4); 
     points.add(d5); 
     points.add(d6); 
     points.add(d7); 
     points.add(d8); 


     g.setUnit("meters"); 
     g.appendUnit(true); 
     g.setBars(points); 

     g.setOnBarClickedListener(new OnBarClickedListener(){ 

      @Override 
      public void onClick(int index) { 

      } 

     }); 
     return view; 
    } 
    public HistoryFrag() { 
     // TODO Auto-generated constructor stub 
    } 
} 

historyfrag.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <com.echo.holographlibrary.BarGraph 
     android:id="@+id/bargraph" 
     android:layout_width="match_parent" 
     android:layout_height="200dp" /> 

</LinearLayout> 

В historyfrag.xml, столбчатый берется из библиотеки не существует никаких проблем в библиотеке.

Спасибо заранее.

ответ

0

Вам необходимо прикрепить Fragment к вашей деятельности с помощью FragmentManager. В зависимости от того, хотите ли вы использовать фреймворк рамки или поддерживающий фрагмент, этот процесс немного отличается.

Framework Фрагмент

Это класс фрагмент, который встроен в Android Framework и доступен в API 11 и выше.

Чтобы использовать класс фрагмент, который является частью Android рамок вам нужно изменить оператор импорта в классе HistoryFrag от:

import android.support.v4.app.Fragment; 

в

import android.app.Fragment; 

Тогда в вашем методе деятельности onCreate вам необходимо добавить:

getFragmentManager() 
    .beginTransaction() 
    .replace(R.id.fghis, new HistoryFrag()) 
    .commit(); 

Фрагмент библиотеки поддержки

Если вы хотите поддерживать уровни API < 11, то вам нужно будет использовать класс фрагмента из Библиотеки поддержки. Это возвращает функциональность фрагмента к API 4.

Если вы хотите использовать класс Фрагмент из Библиотеки поддержки, вам необходимо убедиться, что вы расширяете FragmentActivity и оставляете оператор import в своем классе HistoryFrag как android.support.v4.app.Fragment.

Затем в методе активность onCreate() добавить что-то вроде:

getSupportFragmentManager() 
    .beginTransaction() 
    .replace(R.id.fghis, new HistoryFrag()) 
    .commit(); 

Это будет приложить фрагмент к деятельности.

+0

Hi Jahnold, Фактически в моем сценарии я не хочу использовать FragmentActivity.Итак, я не могу использовать эту вещь с Activity? –

+0

Вы можете использовать фреймворк рамки, а не поддержку. Я добавлю детали ответа – Jahnold