代码之家  ›  专栏  ›  技术社区  ›  Karthick

在ListActivity中使用菜单时,应用程序崩溃。如何解决这个问题?

  •  0
  • Karthick  · 技术社区  · 15 年前
      public class SimpleOptionMenu extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        return true;
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.icon:     Toast.makeText(this, "You pressed the icon!", Toast.LENGTH_LONG).show();
                                break;
            case R.id.text:     Toast.makeText(this, "You pressed the text!", Toast.LENGTH_LONG).show();
                                break;
            case R.id.icontext: Toast.makeText(this, "You pressed the icon and text!", Toast.LENGTH_LONG).show();
                                break;
        }
        return true;
    }
    }
    

    我已经创建并填充了res/menu/menu.xml文件。当这个类只扩展Activity时,它工作得很好,但当我使用ListActivity时,它总是崩溃。我在使用另一个使用列表活动的应用程序时注意到了这一点。[经过长时间的艰苦搜索后。|]

    2 回复  |  直到 15 年前
        1
  •  0
  •   jwriteclub Himanshu Shukla    15 年前

    如果看不到堆栈跟踪,很难确切知道发生了什么,但是, ListActivity main.xml 有特定的ID。

        2
  •  0
  •   Wolverine    15 年前

    setContentView可用于ListActivity。我假设main.xml文件有问题。在典型的ListActivity中,main.xml至少应该有2个元素,如下所示。如果列表中没有元素,Android将默认为没有任何id的。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <ListView android:id="@android:id/list"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <TextView android:id="@android:id/empty"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"     
            android:text="@string/txtViewMainTitle" 
            android:layout_gravity="center"/>
    </LinearLayout>