2011-06-03 64 views
0

我想在android中绘制一个图表,并为此我使用一个图表(我导入到我的应用程序中的一个jar文件),我通过该值需要显示...从它的父母中删除图表

该图表存在的问题是它占用了设置的活动的全屏幕。与整个数据

protected void onProgressUpdate(String...values) { 


setContentView(lv); 

} 

一遍又一遍:

public void onCreate(){ 

LineView lv; 

lv=new LineView(this); 

} 

,我把图表上的值是从DB使用异步线程,这样somwewhere我这样做readed。

这里是我的问题:

我试图用我在其中有一个空白的线性布局和按钮(我想设置我的图表下方的按钮)的XML文件,我想通过我的图表LV作为一个孩子到线性布局,不占据了我的整个屏幕:


XML文件:

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout 

    xmlns:android="http://schemas.android.com/apk/res/android" 

    android:layout_width="fill_parent" 

    android:layout_height="fill_parent"> 



<LinearLayout 


    android:id="@+id/titlu" 

    android:orientation="horizontal" 

    android:layout_width="fill_parent" 

    android:layout_height="250px" > 


/> 

</LinearLayout> 

    <Button 

android:layout_width="wrap_content" 

android:layout_height="wrap_content" 

android:text="Stop" 

android:gravity="bottom" 

android:id="@+id/stop" 

/> 

当我试图在的onCreate :

thatlinear=(LinearLayout)findViewById(R.id.titlu); 

这:

thatlinear.addView(lv); in my function onProgresssUpdate() 

我曾告诉我说我的表,LV,已经有母,为了将它传递给其他错误父母我必须删除最初的父母。

所以...我这样做:

ViewGroup v=(ViewGroup)(lv.getParent()); 

     v.removeView(lv); 

但细想一下,它没有工作这样......我在这行有一个FC-java的郎空指针异常:

v.removeView(lv); 

而最后这个我想是这样的:

LinearLayout llay=new LinearLayout(this); 

     LinearLayout lytContainer = (LinearLayout) View.inflate(
       this, R.layout.chart_speed, null); 



     lytContainer.setLayoutParams(new LinearLayout.LayoutParams(

          LinearLayout.LayoutParams.FILL_PARENT, 

          LinearLayout.LayoutParams.WRAP_CONTENT)); 


     llay.addView(lv); 

chart_speed是我上面发布的xml ...

而且它没有这样工作....仍然FC。

问:

如何进行,以通过我的图表作为一个孩子到线性布局,所以它不会filll我的整个画面......我可以把按钮它下面???

编辑:

我已经做到了这一点:

setContentView(R.layout.chart_speed); 

ViewGroup thatlayout=(ViewGroup)findViewById(R.id.titlu); 

thatlayout.addView(lv); 

chart_speed,是我整个XML titlu的名字是我的LinearLayout的@ + ID ...

而这正是我的logcat显示:

java.lang.NullPointerException 
    at com.kidroid.kichart.view.AxisView.GenerateValue(AxisView.java:112) 

at com.kidroid.kichart.view.AxisView.drawAxisXY(AxisView.java:61) 

at com.kidroid.kichart.view.LineView.onDraw(LineView.java:19) 

at android.view.View.draw(View.java:6535) 

at android.view.ViewGroup.drawChild(ViewGroup.java:1531) 

    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258) 

0 at android.view.ViewGroup.drawChild(ViewGroup.java:1529) 

    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258) 

    at android.view.ViewGroup.drawChild(ViewGroup.java:1529) 

at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258) 

    at android.view.View.draw(View.java:6538) 

EDIT2:

我在我的ProgressUpdate这样做(){

// initializating组件

thatlayoyt.add(lv);

}

而对于一个几秒钟它会显示正确的,但在那之后,我得到FC:

java.lang.IllegalStateException:指定的孩子已经有一个父。您必须先调用子对象的父对象的removeView()。

at android.view.ViewGroup.addViewInner(ViewGroup.java:1861) 

at android.view.ViewGroup.addView(ViewGroup.java:1756) 

在android.view.ViewGroup.addView(ViewGroup.java:1713)


最终版本和它的作品...我不认为是非常正确的,但它的工作原理:

ViewGroup thatlayout;

公共无效的onCreate(捆绑savedInstanceState){

thatlayout =(的ViewGroup)findViewById(R.id.titlu);

}

保护无效onProgressUpdate(字符串值...){

// initalizating

try{ 
     ViewGroup v=(ViewGroup)(lv.getParent()); 
     v.removeView(lv); 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 


     thatlayout.addView(lv); 

}


回答

0

我相信麻烦的是在这里:

protected void onProgressUpdate(String...values) { 

    setContentView(lv); //HERE 

} 

您只需拨打setContentView一次,电话号码为onCreate。之后,你可以实例化一个LineView(我想这是图),并将其添加到主布局。

// in onCreate 
setContentView(R.layout.main); 
LineView lv = new LineView(); 
ViewGroup main = (ViewGroup)findViewById(R.id.main); 
main.addView(lv); 

我假设你的主要布局在main.xml定义和根布局具有android:id="@+id/main

+0

sa vedem,sa vedem ..... lasa ma un minut sa incerc :) – adrian 2011-06-03 11:59:11

+0

Mi-am editat intrebarea,ai putea sa te uiti?!! Ms :) – adrian 2011-06-03 12:20:58

+0

它看起来像是有问题的习惯零件。在展示之前,你必须做一些初始化工作。请参阅[此链接](http://writerbay.net/?p=401)或[这一个](http://stackoverflow.com/questions/6221300/place-a-chart-in-a-view)。 – 2011-06-03 12:29:27