0

ListView を使用するのはこれが初めてで、これを実行可能にするために多くの方法を試しました。最初に、xml ファイル内で「android:entries」を文字列配列で指定するために使用しましたが、表示されましたが、onClickListener をアクティブにできませんでした。他の方法は私が持っているものと似ていて、代わりに「extend Acitvity」を使用したものもありました. 助けてくれてありがとう。

基本的に、リストの項目ごとにカスタマイズされた textView 行を使用し、クリック可能な行ごとにトーストを表示したいと考えています。私の問題は、このアクティビティを表示しようとするとアプリケーションがクラッシュすることです。構文エラーがないため、どこに問題があるのか​​ わかりません。エラーメッセージは次のとおりです(申し訳ありませんが、写真を配置しますが、できません-新しいユーザー):

  • 致命的な例外: メイン
  • java.lang.RuntimeException: アクティビティ ComponentInfo(edu.....) を開始できません
  • Android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2202) で
  • Android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2237) で
  • android.app.ActivityThread.access$600 で (ActivityTHread.java:139)
  • android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262) で
  • android.os.Handler.dispatchMessage(Handler.java:99) で
  • android.os.Looper.loop(Loooper.java:154)
  • Android.app.ActivityThread.main (ActivityThread.java:4974) で
  • java.lang.reflect.Method.invokeNative(ネイティブ メソッド) で
  • java.lang.reflect.Method.invoke (メソッド java:511) で
  • com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) で
  • com.android.internal.os.ZygoteInit.main (ZygotaInit.java:551) で
  • dalvik.system.NativeStart.main (ネイティブ メソッド) で
  • 原因:java.lang.UnsupportedOperationException: addView(View, LayoutParams)...
  • android.widget.AdapterView.addView(AdapterView.java:471) で
  • android.view.LayoutInflater.rInflate(LayoutInflater.java:743) で
  • android.view.LayoutInflater.rInflate(LayoutInflater.java:742) で
  • android.view.LayoutInflater.rInflate(LayoutInflater.java:489) で
  • android.view.LayoutInflater.rInflate(LayoutInflater.java:396) で
  • android.view.LayoutInflater.rInflate(LayoutInflater.java:352) で
  • com.android.internal.policy.impl.PhoneWindows.setContentView(PhoneWindow.java ...) で
  • android.app.Activity.setContentView(Activity.java:1892) で
  • edu.nyp.wonderful.Menu.onCreate (Menu.java:14) で
  • android.app.Activity.performCreate(Activity.java:4538) で
  • android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1071) で
  • Android.app.ActivityThread.performLaunchActivity (ActivityTHread.java:2158) で
  • ... あと 11 行 ( 入力するためにこれ以上は表示できません )

Menu.java v

package edu.nyp.wonderful;

import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;


public class Menu extends ListActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu);

        Log.d("Menu:", "after set content view");

        String[] items = { "Set Pins", "View Pins", "List of Pins", "Email Summary", "Edit Session's Info" };

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.menu_row, R.id.menu_name, items);
        setListAdapter(adapter);
        Log.d("Menu:", "after setting adapter");
    }

    protected void onListItemClick(ListView l, View v, int position, long id){
        super.onListItemClick(l, v, position, id);
        Toast.makeText(getApplicationContext(), "Clicked position: " + position, Toast.LENGTH_SHORT).show();
    }
}

menu.xml v

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

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginBottom="10dp" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="54dp"
            android:layout_height="60dp"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="10dp"
            android:src="@drawable/logo" />

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Menu"
            android:textColor="#DC1700"
            android:textStyle="bold"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="30dp"
            android:textSize="25sp"
            android:typeface="serif" />
    </LinearLayout>

    <View android:id="@+id/separator1" 
         android:background="#000000" 
         android:layout_width = "fill_parent"
         android:layout_height="1dp"
         android:layout_marginBottom="10dp" />


    <ListView
        android:id="@+id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:divider="#000000"
        android:dividerHeight="1dp" >

        <TextView android:id="@+id/android:empty"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="nothing" />

    </ListView>
</LinearLayout>

* menu_row.xml v*

<?xml version="1.0" encoding="utf-8"?>
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/menu_name"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="#000000"
    android:textSize="23dp"
    android:shadowRadius="5"
    android:shadowColor="#000000"
    android:shadowDy="3"
    android:shadowDx="3"
    android:layout_marginLeft="10dp"
    android:layout_marginBottom="10dp"
    android:layout_marginTop="10dp" />
4

2 に答える 2

0

ええ、これが問題です。

android:id="@+id/android:list"

そのはず

android:id="@android:id/list"

修正して確認し、問題が解決しない場合は報告してください。

更新:以前に見なかったなんて信じられない :P

TextView中に がありListviewます。これは不可能です。「空のビュー」を使用する場合は、両方を LinearLayout/FrameLayout 内に配置してください。ただし、Listview は TextView を囲むことはできません。それらは互いに隣り合っている必要があります。次に、この場合、「ListView」の「Empty View」プロパティを Textview の ID に設定して@android:id/emptyください (これも修正してください)。

于 2012-09-24T03:14:17.850 に答える
0

このようにコードを変更してみてください

public class Menu extends ListActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu);

        Log.d("Menu:", "after set content view");

        String[] items = { "Set Pins", "View Pins", "List of Pins", "Email Summary", "Edit Session's Info" };

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.menu_row, R.id.menu_name, items);

        ListView lv  = getListView();
        lv.setAdapter(adapter);
        Log.d("Menu:", "after setting adapter");
    }

    protected void onListItemClick(ListView l, View v, int position, long id){
        super.onListItemClick(l, v, position, id);
        Toast.makeText(getApplicationContext(), "Clicked position: " + position, Toast.LENGTH_SHORT).show();
    }
}

効くか教えて...

于 2012-09-24T03:50:01.707 に答える