1

Viewメソッドで一部の情報を描画するだけで、コントロールから拡張するカスタム ビュー コントロールを作成しましたonDraw

通常のアクティビティ レイアウトでコントロールを作成すると、すべてが機能します。しかしonCreateView()、Fragment でこのコントロールを作成すると、作成中に描画され、View が「フリーズ」します。動作して解決しますが、呼び出していませんonDraw()。電話をかけようとしていますinvalidate()が、何もありません。

何か案は?

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)     {       
    final View v = inflater.inflate(R.layout.button, container, false);
    mAgatButton = (agatButton) v.findViewById(R.id.agatButton1);
    mAgatButton.setOnClickListener(new OnClickListener() {      
        @Override
        public void onClick(View view) {
            // This not Repainted           
            final GraphViewSeries TahoSer = mGraphTaho.getSeries((byte)0);
            mGraphTahoPos++;
            TahoSer.appendData(new GraphViewData(mGraphTahoPos, 50d), true);            
            //This Work correct
            mTahoLabel.setText(String.format(getString(R.string.button_rpm), (int)(Math.random()*1000)));

            Log.d(agatButton.class.toString(),"Click Detected: "+TahoSer.size());
        }
    });
    final Context context = getActivity().getApplicationContext();

    LinearLayout graphView = (LinearLayout) v.findViewById(R.id.graph_lay_taho);
    graphView.addView(mGraphTaho = getGraphView(context,"Taho"));

    mTahoLabel = (TextView) v.findViewById(R.id.tahoText);
    mTahoLabel.setText(String.format(getString(R.string.button_rpm), 0));

    return v;
}

private GraphView getGraphView(Context context, String Name)
  {
     final GraphView tmpView = new LineGraphView(context,Name);  
     tmpView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));

     List<GraphViewData> initalSeriesData = new ArrayList<GraphViewData>();
     for (byte i=0;i<20;i++)
         initalSeriesData.add(new GraphViewData(i, 0d));

     final GraphViewSeries tahoSeries = new GraphViewSeries(initalSeriesData);

     ((LineGraphView) tmpView).setDrawBackground(true);
     tmpView.addSeries(tahoSeries);
     tmpView.setViewPort(1, 20);
     tmpView.setScalable(false);
     tmpView.setManualYAxis(true);
     tmpView.setManualYAxisBounds(100, 0);

     return tmpView;
  }

Fragment を使用しない場合、すべてが機能します。なにが問題ですか?

4

0 に答える 0