2011-08-08 13 views
0

メインアクティビティクラスのカスタムボタンはどこに宣言しますか?それはonStartメソッド上にあることができますか、それともonCreateメソッドでのみ機能しますか?Androidのアクティビティ質問

お願いします。

また、私が話していることをさらに説明するために、ここに私のアクティビティクラスがあります。

public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      if(D) Log.e(TAG, "+++ ON CREATE +++"); 
      setContentView(R.layout.main); 



      mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
      if (mBluetoothAdapter == null) { 
       Toast.makeText(this, "Bluetooth is not available", Toast.LENGTH_LONG).show(); 
       finish(); 
       return; 
       }   
     } 
    @Override 
     public void onStart() { 
      super.onStart(); 
      if(D) Log.e(TAG, "++ ON START ++"); 
      // If BT is not on, request that it be enabled. 
      if (!mBluetoothAdapter.isEnabled()) { 
       Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
       startActivityForResult(enableIntent, REQUEST_ENABLE_BT); 
       } 
      else { 
       startApp(); 
       } 
      } 
private void startApp(){ 

     View Patient_Button = findViewById(R.id.patientButton); 
     Patient_Button.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
      //case R.id.patientButton: 
       //Intent b = new Intent(getApplicationContext(), Detailed_ModeActivity.class); 
       //startActivity(b); 
       //break; 
       } 
      } 
     ); 
     View Doctor_Button = findViewById(R.id.doctorButton); 
     Doctor_Button.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       Intent a = new Intent(getApplicationContext(), Detailed_ModeActivity.class); 
       startActivity(a); 
       //break; 
       } 
      } 
     ); 
     View About_Option = findViewById(R.id.aboutButton); 
     About_Option.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       Intent c = new Intent(getApplicationContext(), About.class); 
       startActivity(c); 
       //break; 
       } 
      } 
     ); 

*

main.xml:アンドロイドで

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:background="@color/background" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="85dip" 
    android:orientation="horizontal"> 
    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_gravity="center" android:orientation="vertical"> 
     <TextView 
      android:text="@string/mainTitle" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_marginBottom="25dip" 
      android:textSize="24.5sp"/> 


     <!-- Patient Option --> 
     <Button android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
      android:text="@string/patientButton" 
      android:id="@+id/patientButton"> 
     </Button> 

     <!-- Doctor Option --> 
     <Button android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/doctorButton" 
      android:layout_weight="1" 
      android:id="@+id/doctorButton"> 
     </Button> 

     <!-- Exit Mode --> 
     <Button android:text="@string/exit" 

     android:layout_weight="1" 
     android:id="@+id/exit" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"></Button> 

     <!-- About Mode --> 
     <Button android:text="@string/aboutButton" 

     android:layout_weight="1" 
     android:id="@+id/aboutButton" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"></Button> 

    </LinearLayout> 



</LinearLayout> 
+0

これは、カスタムボタンの宣言方法によって異なります。コード内またはXMLリソース内。 –

+0

両方で宣言しました – YoKaGe

+0

通常、onCreate()で宣言します。おそらく、ボタンのコントローラーを作ることを検討するべきでしょう。 onCreate()で目的のビューでコントローラをインスタンス化します。 –

答えて

2

、私はのonCreate()メソッドでボタンを宣言するために、従来であると考えています。 @Mike Dが述べたように、このonCreate()メソッドでコントローラを作成してインスタンス化することもできます。あなたの質問は、あなたがこれにどのような問題があるのか​​についてあまり明確ではありませんが、それらの選択肢 - onStart()とonCreate()の間の答えを探しているようです。例については

、このシナリオでは

public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Button sampleButton = (Button) findViewById(R.id.sampleButton); 
} 

は、あなたがボタンは、あなたのmain.xmlファイルで宣言しているだろうと、このボタンのIDがsampleButtonだろう。

今後の参考として、このページのchartをご覧になり、Androidアクティビティのライフサイクルと場所を確認することが非常に重要です。これはこの質問に答えるだけでなく、あなた自身でこのような概念を研究する余地を与えます。

0

RoboGuiceあなたの開発をスピードアップしようとするので、これらのマイナーな詳細をあまり心配する必要はありません。

+0

リンクの内容を具体化してください – Freakyuser

+0

確かに。 RoboGuiceは、ほとんどの初期化呼び出しを処理することで開発のスピードを向上させます。したがって、onCreate(...)メソッドでは、すべてのリソース(つまり、ボタンなど)に対してViewById(...)を見つける必要はありません Wikiには良い例と詳細な説明があります。https:// github .com/roboguice/roboguice/wiki – drunkenRabbit

+0

ahaa、私はあなた自身の答えを編集し、上記のコメントの上記の内容を答えに追加したかった。質問者が回答を受け入れるのを待つか、他人がアップヴォートするのを待ちます。 – Freakyuser