基本免责声明;我是移动应用程序编程的新手,特别是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:我的意思是,这是答案。感谢提示。)
答案 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
一般情况下,您应该熟悉adb
和logcat
。由于模拟器调试应用程序的方式,很多时候您的应用程序将崩溃,您将在Eclipse中看到“源未找到”消息。在try / catch块中包装问题代码并记录异常(Log.e( TAG, MESSAGE);
)是一个快速的&amp;轻松查看真实情况。