0

ユーザーデータに従って計算を行うプログラムがあります。プログラムは正常に動作しますが、プロットを作成するために achartengine を使用しようとすると、クラッシュします (プロットを実行しません)。

LineGraph クラスでデータを正しく渡しているかどうかはわかりません。

私が理解しているように、私は使用しなければなりません

「バンドル sth=getIntent.getExtras()」ですが、LineGraph のどこに配置すればよいかわかりません。

ユーザーがデータを入力してから計算ボタンを押すと、別のアクティビティで結果が表示される number_cores クラスがあります。これで、私は持っています:

public void cores_func(){
             double initcores=Double.parseDouble(num_cores.getText().toString().trim());
             double half_time=Double.parseDouble(halftimecores.getText().toString().trim());
             double ttime=Double.parseDouble(timecores.getText().toString().trim());
             double l=Math.log(2)/half_time;
             double fcores=initcores*Math.exp(-l*ttime);
             
             
             Intent i=new Intent(this,core_calcs.class);
             i.putExtra("value",fcores);
             i.putExtra("value2",initcores);
             startActivity(i);  
         }

次に、core_calcs クラスで (上記の意図からわかるように)、結果を表示し、ユーザーがクリックするとグラフを表示するボタンを追加しました (現在、ここでクラッシュします)。

私は onCreate メソッドに (core_calcs) を持っています:

double fcores=getIntent().getExtras().getDouble("value");
        double initcores=getIntent().getExtras().getDouble("value2");

その後 :

 public void onClick(View v) {
    switch (v.getId()){
    case R.id.show_cores_graph:
        double fcores=getIntent().getExtras().getDouble("value");
        double initcores=getIntent().getExtras().getDouble("value2");
        Intent i = new Intent();        
        i.setClassName("com.wordpress.androiddevgeo.Radiation",LineGraph.class.getName());                 
        i.putExtra("value", fcores);
        i.putExtra("value2", initcores);
        this.startActivity(i);  
        break;
      }      
    }

(また、ここに public void LineGraphHandler (ビュー ビュー) があります)

最後に、LineGraph クラス (上記の意図) で:

public class LineGraph extends Activity {

public void onCreate(Bundle savedInstanceState){
    
    super.onCreate(savedInstanceState);
    
    Bundle extras=getIntent().getExtras();
    String fcores=extras.getString("value");
    String initcores=extras.getString("value2");
}



public Intent getIntent(Context context){
    
    //double ttime=getIntent(context).getExtras().getDouble("value");
                    
    double [] x = {0,100};           //time axis
    double [] y = {initcores,fcores};  //number of cores axis
    
    TimeSeries series = new TimeSeries("Number of cores");
    for (int i=0;i<x.length;i++){
        series.add(x[i],y[i]);
    }
    
    XYMultipleSeriesDataset dataset=new XYMultipleSeriesDataset();
    dataset.addSeries(series);
    
    XYMultipleSeriesRenderer mRenderer =new XYMultipleSeriesRenderer();
    XYSeriesRenderer renderer =new XYSeriesRenderer();
    mRenderer.addSeriesRenderer(renderer);
    
    Intent intent=ChartFactory.getLineChartIntent(context, dataset, mRenderer,"Decay");
    
    return intent;
    
      }
       }

データ (initcores と fcores ) を LineGraph に渡す方法は?

--------エラー メッセージ -------------------------------------------- -----

W/dalvikvm(734): threadid=3: キャッチされない例外で終了するスレッド

(グループ = 0x4000fe70) 01-15 18:42:01.334: E/AndroidRuntime(734): キャッチされていないハンドラー: スレッド メインがキャッチされていない例外のために終了しています

E/AndroidRuntime(734): android.content.ActivityNotFoundException: 明示的なアクティビティ クラスが見つかりません

AndroidManifest.xml でこのアクティビティを宣言しましたか?

(LineGraph のアクティビティと "org.achartengine.GraphicalActivity" も宣言しました) ありがとうございます。

4

1 に答える 1

1

バンドル アプローチ:

Intent searchIntent = new Intent();        
searchIntent.setClassName("com.mypackage",searrchActivity.class.getName());                 
searchIntent.putExtra("value", initcores); // key/value pair, where key needs current package prefix.                   
searchIntent.putExtra("value2", fcores);
thisactivity.startActivity(searchIntent);  

および LineGraph アクティビティで:

class LineGraph extends Activity{
   private Double initcores;
   private Double fcores;

   public Double getInitcores(){ return this.initcores;} 
   public void setInitcores(Double initcores){ this.initcores=initcores;} 
   public Double getFcores(){ return this.fcores;} 
   public void setFcores(Double fcores){ this.fcores=fcores;} 


   public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    ......
    Bundle extras = getIntent().getExtras(); 
    Double initcores= extras.getDouble("value"); 
    setInitcores(initcores); 
    Double fcores= extras.getDouble("value2"));
    setFcores(fcores);

    }
  public Intent getIntent(...){
                  Double initcores= getInitcores();
                  Double fcores= getFcores();
           //yourcode 
  }
}

SharedPreferences アプローチ:

    SharedPreferences sp =PreferenceManager.getDefaultSharedPreferences(this);      
    SharedPreferences.Editor ed= sp.edit();
    ed.putInt("screen_width", 480);     
    ed.commit();        

そして次の活動で

    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
    int width = sp.getInt("screen_width",default_int_value);

これが少し役立つことを願っています

于 2012-01-15T16:39:49.680 に答える