我想在片段中显示我的活动中的条形图,但它显示出膨胀问题。所以,我将Activity更改为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中,BarGraph取自库,库中没有问题。
先谢谢。
答案 0 :(得分:0)
您需要使用FragmentManager将Fragment附加到Activity。根据您是否要使用框架片段或支持片段,此过程略有不同。
框架片段
这是Fragment类,内置于Android Framework中,可在API 11及更高版本中使用。
要使用属于Android框架的Fragment类,您需要更改HistoryFrag类中的import语句:
import android.support.v4.app.Fragment;
到
import android.app.Fragment;
然后在您的活动onCreate
方法中,您需要添加:
getFragmentManager()
.beginTransaction()
.replace(R.id.fghis, new HistoryFrag())
.commit();
支持图书馆碎片
如果要支持API级别&lt; 11,则需要使用支持库中的Fragment类。这将片段功能向后移植到API 4。
如果您想使用支持库中的Fragment类,则需要确保扩展FragmentActivity
并将historyFrag类中的import语句保留为android.support.v4.app.Fragment
。
然后在您的活动onCreate()
方法中添加以下内容:
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fghis, new HistoryFrag())
.commit();
然后将片段附加到活动。