마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Viewpager안에 graphview 사용시 문제

0 추천

Viewpager로 세개의 버튼과 xml을 뿌려주고 

xml에 graphview를 사용하여 라인그래프를 그려보고 싶은데요 

graphview에 대한 activity를 생성해서 몇개의 샘플데이터를 써서 그래프가 그려지는지 확인해보려고 하는데 

액티비티가 연결이 안되는거같아요 ..

지금 모습인데요 그래프가 생성만 되고 데이터가 들어가질 않아서요 ... 

따로 돌려보면 문제없이 잘 되는데 viewpager랑 같이 쓰려고 하니까 액티비티 간의 연결이 안된건가요 ?

도와주세요 

 

viewpager부분 코드입니다.

public class chartActivity extends AppCompatActivity  {

    ViewPager pager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chartmain);

        pager = (ViewPager)findViewById(R.id.pager);
        CustomAdapter adapter = new CustomAdapter(getLayoutInflater());
        pager.setAdapter(adapter);


    }
    public void vpClick(View v) {
        int position;

        switch (v.getId()) {
            case R.id.btn_day:
                setCurrentInfalteItem(0);

                break;
            case R.id.btn_week:
                setCurrentInfalteItem(1);
                break;
            case R.id.btn_month:
                setCurrentInfalteItem(2);
                break;
        }
    }

    private void setCurrentInfalteItem(int type) {
        if(type==0){
            pager.setCurrentItem(0);
        }else if (type ==1){
            pager.setCurrentItem(1);
        }else if (type ==2){
            pager.setCurrentItem(2);
        }
    }
    private Button inbtn_day;
    private Button inbtn_week;
    private Button inbtn_month;

    private void setlayout(){
        inbtn_day = (Button)findViewById(R.id.btn_day);
        inbtn_week = (Button)findViewById(R.id.btn_week);
        inbtn_month = (Button)findViewById(R.id.btn_month);
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

어댑터 부분 입니다.

public class CustomAdapter extends PagerAdapter {

    LayoutInflater inflater;

    public CustomAdapter(LayoutInflater inflater){
        this.inflater = inflater;
    }


    @Override
    public int getCount() {
        return 3;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        View view = null;

        if(position==0)
        {
            view = inflater.inflate(R.layout.viewpager1,null);
            view.findViewById(R.id.btn_day);
        }else if(position==1) {
            view = inflater.inflate(R.layout.viewpager2,null);
            view.findViewById(R.id.btn_week);
        }else {

            view = inflater.inflate(R.layout.viewpager3,null);
            view.findViewById(R.id.btn_month);
        }
        container.addView(view);
        return view;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View)object);
    }

    @Override
    public boolean isViewFromObject(View v, Object obj) {
        return v==obj;
    }
}

그래프를 그려줄 액티비티 입니다.

public  class chart_dayActivity extends Activity {

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

        Log.d("1", "GraphView running test");
        GraphView chart_day_line = (GraphView)findViewById(R.id.chart_day);
        LineGraphSeries<DataPoint> line_series =
                new LineGraphSeries<DataPoint>(new DataPoint[]{
                        new DataPoint(0,1),
                        new DataPoint(1,4),
                        new DataPoint(2,2),
                        new DataPoint(3,5),
                        new DataPoint(4,3)
                });
        chart_day_line.addSeries(line_series);


        Log.d("1", "GraphView running test");
        Viewport viewport = chart_day_line.getViewport();
        viewport.setXAxisBoundsManual(true);
        viewport.setYAxisBoundsManual(true);
        viewport.setMinX(0);
        viewport.setMaxX(5);
        viewport.setMinY(0);
        viewport.setMaxY(5);
        viewport.setScrollable(true);



    }
}

xml입니다

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <TextView
        android:id="@+id/chart_day_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Chart_day"
        android:textSize="20dp"/>

    <com.jjoe64.graphview.GraphView
        android:layout_width="match_parent"
        android:layout_height="200dip"
        android:id="@+id/chart_day"
        android:layout_below="@id/chart_day_text" />


</RelativeLayout>
gland2 (120 포인트) 님이 2016년 4월 6일 질문

1개의 답변

0 추천

onCreate에

this.setWillNotDraw(false);

를 추가해 보세요.

딱히 다른 이유를 모르겠네요.

이라슈 (8,770 포인트) 님이 2016년 4월 6일 답변
...