字符串数组还是新类?

时间:2011-06-25 18:59:47

标签: android arrays string class

我的应用程序如何工作,一旦用户打开它,它将打开一个屏幕,根据用户点击的按钮,他们想要玩多少个高尔夫球洞(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;
    }

我不确定该字符串数组是否是将其传递给另一个活动的正确方法?

提前致谢!

2 个答案:

答案 0 :(得分:0)

纯OO人会说你应该创建一个包含常用操作和字段的抽象基类,然后为专门化创建子类。上述案例陈述和if语句不是纯粹的OO。

对于一般的数组也是如此 - 在纯OO中,您可能将它们作为类中的字段,但对它们执行的任何操作都将在类中。

就我个人而言,我会说你认为更容易维护,编程更快,其他人阅读代码更明显。我想这并没有真正回答这个问题: - )

答案 1 :(得分:0)

你绝对不应该只为两个对象使用数组!这太过分了。这很重要,因为您在移动设备上使用的内存很少,并且阵列占用了一些内存。此外,您应该使用按钮侦听器而不是switch / case语句来查找正在发生的事情。

首先,我强烈建议深入了解OOP,并在潜入Android之前学习使用Java的程序的基础知识。你不必走这条路,但我会说,如果你选择不学习基础知识和基础知识......为一条漫长的艰难道路做准备。

话虽如此,在Android恕我直言中这样做最简单的方法就是这样......评论应该为你提供足够的洞察力。

班级档案:

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

希望所有这些都有所帮助,因为这只是一个简单的复制/粘贴事物