0

私はAndroidプログラミングにまったく慣れていないので、昨日最初のプロジェクトであるカクテルバイブルアプリを作成しました。それは完全に実行されますが、問題は、カクテルデータを保存するために大量のクラスと xml をロードしたことです。カクテルの不適切なクラスをすべて排除するために使用できる簡単な方法があるのではないかと思っていました. どんな助けでも大歓迎です。

メニュークラス

package com.drunktxtapp;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class Menu extends ListActivity{

    String classes[] = {"Bloody_Mary", "Capirinha", "Cosmopolitan", "Cuba_Libre", "Daiquiri", "Mai_Tai", "Manhattan", "Margarita", "Martini", "Mint_Julep", "Mojito", "Old_Fashoned", "Pina_Colada", "Screwdriver", "Singapore_Sling", "Tom_Collins", "Whiskey_Sour", "White_Russian"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setListAdapter(new ArrayAdapter<String>(Menu.this,android.R.layout.simple_list_item_1, classes));
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        // TODO Auto-generated method stub
        super.onListItemClick(l, v, position, id);
        String cocktailType = classes[position];
        try{
            Class<?> ourClass = Class.forName("com.drunktxtapp." + cocktailType);
            Intent ourIntent = new Intent(Menu.this, ourClass);
            startActivity(ourIntent);
        }catch (ClassNotFoundException e){
            e.printStackTrace();
        }
    }
}

私のカクテルクラスの例。私はこれらの多くを持っています。

package com.drunktxtapp;

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

public class Bloody_Mary extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.bloody_mary);
        Button b1 = (Button) findViewById(R.id.bYoutube);
        b1.setOnClickListener(new Button.OnClickListener() {
            public void onClick(View v) {
                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=Alt-ehDc3fc")));
                }
            }); 
    }
}

カクテルごとに多数ある私のxmlの1つ。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/beer"
    android:id="@+id/bloody_mary" >

    <TextView
        android:textStyle="bold"
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Bloody Mary"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src="@drawable/bloodymary" />

    <TextView
        android:textStyle="bold"
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Ingredients"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="40ml vodka \n\ 120ml tomato juice \n\ 5ml lemon or lime juice \n\ 5ml worcestershire sauce \n\ 2 dashes tabasco \n\ salt"
        android:textAppearance="?android:attr/textAppearanceSmall" 
        android:textStyle="bold"/>

    <TextView
        android:textStyle="bold"
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="2dp"
        android:text="Preparation"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Squeeze the liquid out of the horseradish, then shake ingredients well with cracked ice in a chilled cocktail shaker, then strain into a Collins glass with 2 or 3 ice cubes in it; add a pinch of salt and a grind or two of fresh pepper, to taste. Garnish, if necessary, with a stalk of celery."
        android:textAppearance="?android:attr/textAppearanceSmall" 
        android:textStyle="bold"/>

    <Button
        android:id="@+id/bYoutube"
        android:layout_width="200dp"
        android:layout_height="75dp"
        android:layout_gravity="center"
        android:layout_marginTop="5dp"
        android:text="YouTube Clip"
        android:textSize="20dp" />

</LinearLayout>

一部を削除したマニフェスト

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

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="8" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity
            android:name=".Splash"
            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=".CocktailMenu"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="com.drunktxtapp.CocktailMenu" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <activity
            android:name=".Menu"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="com.drunktxtapp.Menu" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <activity
            android:name=".Bloody_Mary"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="com.drunktxtapp.Bloody_Mary" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        </application>
</manifest>
4

2 に答える 2

1

すべての種類のカクテルに必要なアクティビティと xml レイアウトは 1 つだけです。(すべてのカクテルのレイアウトは同じで、テキストと画像が異なるだけです。)

現在のアプローチのようにクラスを取得する代わりに、開始インテントでパラメーターを渡します。

Intent ourIntent = new Intent(Menu.this, CocktailDetailActivity.class);
ourIntent.putExtra("whichcocktail", "bloodymary");
startActivity(ourIntent);

宛先アクティビティの onCreate メソッド (CocktailDetailActivity としましょう):

// Get the param back
String cocktail = getIntent().getStringExtra("whichcocktail");
textView1.setText(cocktail);

これで、テキストビューに「bloodymary」が表示されます。実際には、データベース/配列にインデックスを渡したいと思うでしょう。次に、CocktailDetailActivity で、このインデックスによって情報を取得し、正しいカクテルを表示します。

于 2013-04-11T05:07:28.753 に答える