我的应用程序如何工作,一旦用户打开它,它将打开一个屏幕,根据用户点击的按钮,他们想要玩多少个高尔夫球洞(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;
}
我不确定该字符串数组是否是将其传递给另一个活动的正确方法?
提前致谢!
答案 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
希望所有这些都有所帮助,因为这只是一个简单的复制/粘贴事物