2011-06-25 6 views
0

私のアプリケーションの仕組みは、一度ユーザーが開くと、ユーザーがクリックするボタン、再生するホールの数(18または9)に応じて画面に表示されます。そこからユーザーが選択した内容に応じて、アプリケーションのルールに依存する主なアクティビティが起動します。つまり、もし彼らが18を選択した場合、セーブボタンは18番ホールまでアクティブになりません.9番ホールと同じ9番ホールでアクティブになります。これにより、最終的なスコア通知などが行われます。文字列配列または新しいクラス?

9ホールと18ホールの別々のクラスを作成する必要があるかどうか、または開いている画面から何らかの種類の値をメインアクティビティに渡す必要があるかどうか不思議です値を9または18に設定していますか?

私はこのようなもののベストプラクティスにあまり慣れていないので、私はこのプログラミングのエチケットに興味があると思います。

入力画面が(私は9ホールのボタンまたはヘルプボタンを終えていないが、別々のクラスに起動しない限り、18と同じになります)その場合

case R.id.button18Holes: 

     //*********************************// 
     //***LAUNCHES ACTUAL APPLICATION***// 
     //*********************************// 
     Intent myIntent = new Intent(src.getContext(), EasyPar.class); 
     startActivityForResult(myIntent, 0); 

     Intent iStartValues = new Intent(this, EasyPar.class); 
     String[] startValues = new String[] {"18"}; 
     iStartValues.putExtra("strings", startValues); 
     startActivity(iStartValues); 

     break; 

    case R.id.button9Holes: 
     break; 

    case R.id.buttonHelp: 
     break; 
    } 

イムわからないが、今のように、このようになります。文字列配列は、1つを別のアクティビティに渡す適切な方法ですか?

ありがとうございます!

+0

これは完全な答えを書く価値はないと思いますが、9と18のホールゲームのための個別のアクティビティで作成してみましょう。これらの2つのクラスはメニューのような共通アイテムを共有しますか?他の活動へのリンク?もしそうなら、私はApplicationクラスを拡張して、再生されるホールの数などのアプリケーション全体の変数を格納することを考えます。それから、ユーザーのゲームに合わせて必要な場所に切り替える1つのアクティビティを作成します。 –

+0

ありがとうございます!私は現在、アプリケーションを拡張するglobalvariablesクラスの構築に取り組んでいます! – Rob

答えて

0

純粋なOOの人々は、一般的な操作とフィールドを含む抽象基本クラスを作成してから、特殊化のためにサブクラスを作成する必要があります。上記のようなcase文とif文は、純粋なオブジェクト指向ではありません。

これは一般的な配列になります。純粋なオブジェクト指向では、クラスのフィールドとして持つことができますが、クラス内で実行される操作はすべてクラス内にあります。

個人的には、コードを読んでいる人にとっては、保守が簡単で、プログラムが速く、他の人には明らかであると思います。私はそれが本当に質問に答えないと思います:-)

+0

ありがとうございました! – Rob

0

あなたは間違いなく2つのオブジェクトの配列を使用する必要はありません!それは残酷です。これは、モバイルデバイス上で動作するメモリが非常に少なく、配列がメモリを消費するため重要です。また、switch/caseステートメントの代わりにボタンリスナーを使用して、何が起こっているのかを調べる必要があります。

まず、OOPに参加し、Javaを使ってプログラムの基本を学び、Androidにダイビングすることを強くお勧めします。しかし、この道を進む必要はありませんが、基本と基本を習得しないことを選択した場合、長い道のりをつくる準備ができています。

Android IMHOでこれを行う最も簡単な方法は次のようなものです。このコメントでは、何が起こっているかについての十分な洞察が得られるはずです。

クラスファイル:

GolfTestActivity.class

package com.jmarstudios.golf; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class GolfTestActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // This is the main xml layout: res/layout/main.xml 
     setContentView(R.layout.main); 
    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 

     // Get a handle to the two buttons in main.xml 
     final Button _nineHoles = (Button)this.findViewById(R.id.button1); 
     final Button _eighteenHoles = (Button)this.findViewById(R.id.button2); 

     // Create a listener for button1 
     _nineHoles.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // Start the nine hole activity 
       GolfTestActivity.this.startActivity(new Intent().setClassName("com.jmarstudios.golf", "com.jmarstudios.golf.NineHoleActivity")); 
      } 
     }); 

     // Create a listener for button2 
     _eighteenHoles.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // Start the eighteen hole activity 
       GolfTestActivity.this.startActivity(new Intent().setClassName("com.jmarstudios.golf", "com.jmarstudios.golf.EighteenHoleActivity")); 
      } 
     }); 
    } 
} 

NineHoleActivity.class

/** 
* 
*/ 
package com.jmarstudios.golf; 

import android.app.Activity; 
import android.os.Bundle; 

/** 
* @author DDoSAttack 
* 
*/ 
public class NineHoleActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // We simply inflate the layout: res/layout/nineholeslayout.xml 
     setContentView(R.layout.nineholeslayout); 
    } 
} 

EighteenHoleActivity.class

/** 
* 
*/ 
package com.jmarstudios.golf; 

import android.app.Activity; 
import android.os.Bundle; 

/** 
* @author DDoSAttack 
* 
*/ 
public class EighteenHoleActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // We simply inflate the layout: res/layout/eighteenholeslayout.xml 
     setContentView(R.layout.eighteenholeslayout); 
    } 
} 

とXMLファイルで...

のres /レイアウト/ main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Do you want 9 holes or 18 holes?" /> 
    <Button 
     android:text="Nine Holes" 
     android:id="@+id/button1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 
    <Button 
     android:text="Eighteen Holes" 
     android:id="@+id/button2" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 

のres /レイアウト/ nineholeslayout.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
     <TextView 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:text="Nine Holes" 
     /> 
</LinearLayout> 

のres /レイアウト/ eighteenholeslayout.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <TextView 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:text="Eighteen Holes" 
     /> 
</LinearLayout> 

最後に、あなたがする必要がありますあなたのAndroidManifest.xmlファイルにアクティビティを追加してください。

のAndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.jmarstudios.golf" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="8" /> 

    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".GolfTestActivity" android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name=".NineHoleActivity"></activity> 
     <activity android:name=".EighteenHoleActivity"></activity> 

    </application> 
</manifest> 

ここで私は非常にお勧めいくつかの便利なリファレンスです:

http://developer.android.com/reference/packages.html

http://developer.android.com/reference/android/app/Activity.html

http://developer.android.com/resources/faq/commontasks.html

希望はこれがあるとして役立つことのすべてp retty多くの単純なコピー/ペーストのもの

関連する問題