0

所以我有一个鸡尾酒列表,我想单击一个并更改 XML、Image、TextView 和按钮链接中的三个项目。我在设置和更改这些项目时遇到了困难。我目前只尝试两种鸡尾酒。XML

<?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/cocktailDetail" >

    <TextView
        android:id="@+id/textCocktailName"
        android:textStyle="bold"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Cocktail Name"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <ImageView
        android:id="@+id/imageCocktail"
        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/textIngredients"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Insert txt here"
        android:textAppearance="?android:attr/textAppearanceSmall" 
        android:textStyle="bold" />

    <TextView
        android:textStyle="bold"
        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/textPrepration"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Insert txt here"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:textStyle="bold" />

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

</LinearLayout>

班级

package com.drunktxtapp;

import android.net.Uri;
import android.os.Bundle;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ImageView;
import android.view.View.OnClickListener;
import android.app.Activity;
import android.app.ListActivity;
import android.content.Intent;
import android.widget.TextView;
import android.view.View;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;

public class CocktailDetail extends ListActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.cocktaildetail);
        ListView cocktail = getListView();
        cocktail.setOnItemClickListener(new OnItemClickListener() {
           public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
               ImageView imageView1 = (ImageView)findViewById(R.id.imageCocktail);
             if(position == 0){
                 imageView1.setImageDrawable(getResources().getDrawable(R.drawable.bloodymary));
                 Button b1 = (Button) findViewById(R.id.buttonYoutube);
                 TextView t1 = (TextView)findViewById(R.id.textCocktailName);
                 String cocktailName = getIntent().getStringExtra("Bloody_Mary");
                 t1.setText(cocktailName);
                 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")));
             }
                 });
             }else{ 
                 imageView1.setImageDrawable(getResources().getDrawable(R.drawable.bloodymary));
                 Button b1 = (Button) findViewById(R.id.buttonYoutube);
                 TextView t1 = (TextView)findViewById(R.id.textCocktailName);
                 String cocktailName = getIntent().getStringExtra("capirinha");
                 t1.setText(cocktailName);
                 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")));
                    }
                 });
             }
                 }
             });
           }
        }

列出代码

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);;
            Intent ourIntent = new Intent(Menu.this, CocktailDetail.class);
            ourIntent.putExtra("Cocktails", classes);
            startActivity(ourIntent);
    }
}

日志猫

04-18 11:50:36.330: D/dalvikvm(32700): GC_FOR_ALLOC freed 40K, 7% free 12378K/13191K, paused 14ms, total 14ms
04-18 11:50:36.335: I/dalvikvm-heap(32700): Grow heap (frag case) to 12.992MB for 358208-byte allocation
04-18 11:50:36.345: D/dalvikvm(32700): GC_FOR_ALLOC freed 1K, 7% free 12727K/13575K, paused 12ms, total 12ms
04-18 11:50:36.350: V/MediaPlayer-JNI(32700): native_setup
04-18 11:50:36.350: V/MediaPlayer(32700): constructor
04-18 11:50:36.360: V/MediaPlayer(32700): setListener
04-18 11:50:36.360: V/MediaPlayer-JNI(32700): setDataSourceFD: fd 44
04-18 11:50:36.360: V/MediaPlayer(32700): setDataSource(44, 18199, 64493)
04-18 11:50:36.370: V/MediaPlayer(32700): setVideoSurfaceTexture
04-18 11:50:36.370: V/MediaPlayer(32700): prepare
04-18 11:50:36.375: V/MediaPlayer(32700): message received msg=5, ext1=0, ext2=0
04-18 11:50:36.380: V/MediaPlayer(32700): New video size 0 x 0
04-18 11:50:36.380: V/MediaPlayer(32700): callback application
04-18 11:50:36.380: V/MediaPlayer(32700): back from callback
04-18 11:50:36.380: V/MediaPlayer(32700): message received msg=1, ext1=0, ext2=0
04-18 11:50:36.380: V/MediaPlayer(32700): prepared
04-18 11:50:36.380: V/MediaPlayer(32700): signal application thread
04-18 11:50:36.380: V/MediaPlayer(32700): callback application
04-18 11:50:36.380: V/MediaPlayer(32700): prepare complete - status=0
04-18 11:50:36.380: V/MediaPlayer-JNI(32700): start
04-18 11:50:36.380: V/MediaPlayer(32700): start
04-18 11:50:36.385: V/MediaPlayer(32700): back from callback
04-18 11:50:36.635: I/MediaPlayer(32700): Don't send intent. msg.arg1 = 0, msg.arg2 = 0
04-18 11:50:40.750: V/MediaPlayer(32700): message received msg=2, ext1=0, ext2=0
04-18 11:50:40.750: V/MediaPlayer(32700): playback complete
04-18 11:50:40.750: V/MediaPlayer(32700): callback application
04-18 11:50:40.750: V/MediaPlayer(32700): back from callback
04-18 11:50:41.675: V/MediaPlayer-JNI(32700): release
04-18 11:50:41.675: V/MediaPlayer(32700): setListener
04-18 11:50:41.675: V/MediaPlayer(32700): disconnect
04-18 11:50:41.680: V/MediaPlayer(32700): destructor
04-18 11:50:41.680: V/MediaPlayer(32700): disconnect
04-18 11:50:42.750: D/AbsListView(32700): Get MotionRecognitionManager
04-18 11:50:43.980: D/dalvikvm(32700): GC_CONCURRENT freed 233K, 7% free 12967K/13831K, paused 12ms+2ms, total 27ms
04-18 11:50:43.980: D/dalvikvm(32700): WAIT_FOR_CONCURRENT_GC blocked 9ms
04-18 11:50:43.980: V/MediaPlayer-JNI(32700): native_finalize
04-18 11:50:43.980: V/MediaPlayer-JNI(32700): release
04-18 11:50:43.985: D/AndroidRuntime(32700): Shutting down VM
04-18 11:50:43.985: W/dalvikvm(32700): threadid=1: thread exiting with uncaught exception (group=0x40d3c2a0)
04-18 11:50:43.990: E/AndroidRuntime(32700): FATAL EXCEPTION: main
04-18 11:50:43.990: E/AndroidRuntime(32700): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.drunktxtapp/com.drunktxtapp.CocktailDetail}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
04-18 11:50:43.990: E/AndroidRuntime(32700):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100)
04-18 11:50:43.990: E/AndroidRuntime(32700):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
04-18 11:50:43.990: E/AndroidRuntime(32700):    at android.app.ActivityThread.access$600(ActivityThread.java:140)
04-18 11:50:43.990: E/AndroidRuntime(32700):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
04-18 11:50:43.990: E/AndroidRuntime(32700):    at android.os.Handler.dispatchMessage(Handler.java:99)
04-18 11:50:43.990: E/AndroidRuntime(32700):    at android.os.Looper.loop(Looper.java:137)
04-18 11:50:43.990: E/AndroidRuntime(32700):    at android.app.ActivityThread.main(ActivityThread.java:4898)
04-18 11:50:43.990: E/AndroidRuntime(32700):    at java.lang.reflect.Method.invokeNative(Native Method)
04-18 11:50:43.990: E/AndroidRuntime(32700):    at java.lang.reflect.Method.invoke(Method.java:511)
04-18 11:50:43.990: E/AndroidRuntime(32700):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
04-18 11:50:43.990: E/AndroidRuntime(32700):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
04-18 11:50:43.990: E/AndroidRuntime(32700):    at dalvik.system.NativeStart.main(Native Method)
04-18 11:50:43.990: E/AndroidRuntime(32700): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
04-18 11:50:43.990: E/AndroidRuntime(32700):    at android.app.ListActivity.onContentChanged(ListActivity.java:243)
04-18 11:50:43.990: E/AndroidRuntime(32700):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:311)
04-18 11:50:43.990: E/AndroidRuntime(32700):    at android.app.Activity.setContentView(Activity.java:1924)
04-18 11:50:43.990: E/AndroidRuntime(32700):    at com.drunktxtapp.CocktailDetail.onCreate(CocktailDetail.java:22)
4

1 回答 1

0

您需要扩展ListActivity而不是Activityfor CocktailDetailclass,并且您的 XML 应该有一个ListViewwith idandroid:id="@+id/list"

于 2013-04-18T10:39:12.900 回答