菜单单击显示错误的活动

时间:2012-09-24 03:27:06

标签: android android-activity

我为Android应用创建了三个活动:BaseballCardsList,BaseballCardsDetails和FilterBaseballCards。 BaseballCardsList是我的应用程序启动时加载的主要活动。它有一个菜单,然后显示另外两个活动之一。现在,当我刚刚拥有BaseballCardsList和BaseballCardsDetails时,一切似乎都正常工作。但是当我添加FilterBaseballCards时,我一直遇到问题。我已经发现了one issue我遗漏了android:layout_widthandroid:layout_height属性的地方。我目前的问题是我对BaseballCardsDetails或FilterBaseballCards的XML布局文件的更改会导致菜单单击以加载错误的Activity或根本不加载任何Activity(应用程序保留在BaseballCardsList上)。

目前,我在filter_cards.xml中有以下内容:

<?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"
>
    <TextView     
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/filter_by_label" 
    />
    <Button android:id="@+id/ok_button"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/ok_button"
    />
</LinearLayout>

这会按照我的预期进行编译和运行。当我添加

    <Button android:id="@+id/cancel_button"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/cancel_button"
    />

在LinearLayout的末尾,点击菜单加载BaseballCardDetails加载应该在FilterBaseballCards中的小部件,然后点击菜单加载FilterBaseballCards什么都不做。

我是Android编程新手,对此感到非常沮丧。我以为我理解一切都是从我所做的阅读中发挥作用但显然不是。我不知道为什么添加一个Button小部件会导致一个看似无关的问题。我不知道如何追查真正的问题是什么。我想在哪里弄清楚这一点?如果我需要发布更多代码,我将很乐意这样做。我的最后一个问题在所有代码中都结束了很长时间,所以我不想在我的新问题中用如此多的代码淹没每个人。

FilterBaseballCards.java

package bbct.android;

import android.app.Activity;
import android.os.Bundle;

public class FilterBaseballCards extends Activity{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.filter_cards);
    }
}

2 个答案:

答案 0 :(得分:2)

我希望您已在Manifest

中声明了您的班级文件
    <activity android:name=".Your Claass Name">

答案 1 :(得分:0)

以下是关于在Android项目中更改XML文件中的资源和ID时会发生什么情况的猜测:

aapt生成的R类包含一堆static final ints。编译引用这些文件的源文件时,该值将硬编码到生成的.class文件中。现在,当您更改资源或ID并重新生成R类时,将重新生成static final ints的值。在编译的.class文件中硬编码的值可能是指不同的资源。

我太累了,无法测试这是否正确。所以如果有人能证实我的猜测,那就太好了。