2012-01-04 10 views
0

に応答していない私は2つのボタンを持っている最初の画面にしたいし、ユーザがそれらのいずれかをクリックしたときに、彼はに行きます他のボタンと別の画面。私はこれをどう対処するか分からない。アンドロイド - ボタンを押すと、結果を取ったときに対処する方法 - 更新 - >ボタンは

私の主なクラスがある:

public class Radiation extends Activity implements OnClickListener { 
View num_cores; 
View num_mass; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    //Set up click listeners 
    num_cores=(View) findViewById(R.id.select_cores); 
    num_cores.setOnClickListener(this); 
    num_mass=(View) findViewById(R.id.select_mass); 
    num_mass.setOnClickListener(this); 
} 

//called when a button is clicked 
public void onClick(View v) { 
    switch (v.getId()){ 
    case R.id.num_cores: 
     Intent i=new Intent(this,number_cores.class); 
     startActivity(i); 
     break; 
    case R.id.num_mass: 
     Intent k=new Intent(this,number_mass.class); 
     startActivity(k); 
     break; 
} 
} 

}

私はnum_coresボタンを押すと、ユーザーが別の画面に移動し、編集テキストフィールドにいくつかのデータをそこに入力し、計算ボタン計算を行います結果が表示されます。ここで

はnumber_cores.classです:

public class number_cores extends Activity implements OnClickListener { 
EditText num_cores; 
View core_calcs; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 


    super.onCreate(savedInstanceState); 
    setContentView(R.layout.numbercores); 

    num_cores=(EditText) findViewById(R.id.num_cores); 
    core_calcs=(View) findViewById(R.id.core_calcs); 
    core_calcs.setOnClickListener(this); 

} 


    public void onClick(View v) { 
     switch (v.getId()){ 
     case R.id.core_calcs: 
      cores_func(); 
      break; 

     } 
     } 
     public void cores_func(){ 
     //some calculations here with result "double fcores=.." 
      Intent i=new Intent(this,core_calcs.class); 
      i.putExtra("value",fcores); 
      startActivity(i); 
     } 
    } 

core_calcs.java:

public class core_calcs extends Activity { 

    TextView corecalcs; 


    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 


     super.onCreate(savedInstanceState); 
     setContentView(R.layout.core_calcs); 

     corecalcs=(TextView) findViewById(R.id.corecalcs); 
     double f=getIntent().getExtras().getDouble("value"); 
     corecalcs.setText(Double.toString(f)); 

    } 

} 

同じことが他のボタンになります。

にはどうすればより効率的な方法があります!私は私のボタンで失われたのですか?これを扱うことができますか? (今のところ、私のアプリケーションは実行されません)

--UPDATED ---------------

私は私のメインのボタンの幅を定義されていませんでした。 xmlはプログラムがクラッシュした理由です。

は今、それは私に私の二つのボタンで最初の画面を提供しますが、私はそれらをクリックすると、何も起こりません。私はあなただけの単一のEditTextフィールドから入力を取っている理解して何から

+0

クラッシュスタックトレースを含めるように質問を更新してください。アプリケーションがクラッシュするたびに、原因を調べるためにスタックトレースをポストする必要があります。あなたの問題を手助けするのが簡単になります(または何が間違っているのかを理解することさえも) – wnafee

+0

紛失されてどういう意味ですか?あなたのIDの命名に問題があると思いますので、いくつかの規則を設定してください(たとえば、ButtonのすべてのIDは「btn_」で始まり、TextViewのすべてのIDは「txt_」などで始まります)。 スタックトレースを投稿した場合、クラッシュする問題についてより詳しくお手伝いしてください。 – jcxavier

+0

あなたはlogcatを意味するのでしょうか?そこにはたくさんのものがあるからです。 – George

答えて

0

私のミスは、私は、 "ビューnum_coresは、" i "が表示select_cores" に変更された

public class Radiation extends Activity implements OnClickListener { 
View select_cores; 
View select_mass; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    //Set up click listeners 
    select_cores=(View) findViewById(R.id.select_cores); 
    select_cores.setOnClickListener(this); 
    select_mass=(View) findViewById(R.id.select_mass); 
    select_mass.setOnClickListener(this); 
} 

にあったし、今すぐうまくいく!

0

。 2番目のアクティビティを使用することはできますが、この作業を行うにはちょっと残酷です。あなたはしかし、これは、あなたの質問にアプローチするだけで、別の方法であることが容易ダイアログhttp://developer.android.com/guide/topics/ui/dialogs.html

ようなものを使用するかもしれません。あなたの質問に答えるために、特にあなたが使用します。この上記

宣言:

private static final int ACTIVITY_RESULT = 0; 

使用この代わりに、startActivity(I)の;

startActivityForResult(i, ACTIVITY_RESULT); 

とあなたが使用して結果をキャプチャすることができます。

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    if (requestCode == ACTIVITY_RESULT) { 
     if (resultCode == RESULT_OK) { 
         //Do stuff to captured result. 
        } 
      } 
    } 
+0

答えがありがとうございますが、今すぐ私のコードに精通しています。私はダイアログを念頭に置いていますが、今はボタンで練習したいと思います。 – George

関連する問題