Android startActivity()崩溃

时间:2011-02-16 00:42:18

标签: android android-intent

基本免责声明;我是移动应用程序编程的新手,特别是android。

我有一个按钮,当点击它时,应该打开下一个活动:

bCustom.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
        Intent i = new Intent(ctx, DiceCustomList.class);
        startActivity(i);
    }
});

(其中“private Context ctx = this;”因为将“this”放在“ctx”所在的内部onClick时没有得到上下文)

程序在当前活动被遮挡之前崩溃(虽然我不确定过渡如何影响这一点)。在评论几乎所有内容之后,这是它正在调用的活动:

public class DiceCustomList extends ListActivity {
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.custom_list);
    }
}

和custom_list.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:text="@string/rollText"
        android:id="@+id/textRoll2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="11pt"
        android:gravity="center"/>
    <ListView android:layout_height="wrap_content"
        android:id="@+id/listView1"
        android:layout_width="fill_parent"/>
</LinearLayout>

我认为问题在于按钮代码,但我似乎无法接近答案。

编辑:android清单文件确实有:

<activity android:name=".DiceCustomList"></activity>

编辑2:啊,在最终找到Eclipse隐藏堆栈跟踪的地方后,它告诉我:“你的内容必须有一个ListView,其id属性为'android.R.id.list'”,实际上它们意味着“ @ + ID /安卓列表”。嗯,这很有趣。 (编辑3:我的意思是,这是答案。感谢提示。)

3 个答案:

答案 0 :(得分:9)

检查以确保DiceCustomList活动在清单XML文件中有一个条目。

答案 1 :(得分:1)

  

(其中“private Context ctx = this;”   因为将“this”放在“ctx”所在的位置   内心时没有得到上下文   的onClick)

您可以使用YourActivity.this获取上下文。简单的'this'不起作用,因为在此方法中它指向OnClickListener对象。

你能给我们一个LogCat错误日志吗?

答案 2 :(得分:0)

问题是您的DiceCustomList类正在扩展ListActivity,但布局文件缺少一些必需的部分。

ListActivity的布局文件必须包含以下2个具有特定ID的元素。 ListActivity类使用这些元素将数据适配器绑定到活动中的列表(使用setListAdapter(myAdapter););

 <ListView android:id="@+id/android:list"
           {other attributes ommitted} />
 <TextView android:id="@+id/android:empty"
           {other attributes ommitted} />

Android文档具有良好的参考XML和绑定游标的示例:http://developer.android.com/reference/android/app/ListActivity.html

一般情况下,您应该熟悉adblogcat。由于模拟器调试应用程序的方式,很多时候您的应用程序将崩溃,您将在Eclipse中看到“源未找到”消息。在try / catch块中包装问题代码并记录异常(Log.e( TAG, MESSAGE);)是一个快速的&amp;轻松查看真实情况。