【问题标题】:How to connect a layout view with an activity如何连接布局视图和活动
【发布时间】:2011-01-13 00:23:47
【问题描述】:

在我的主要观点中,我有:

public class PlayersActivity extends Activity {
    ViewFlipper flipper;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.playercontainer);
        flipper = (ViewFlipper) findViewById(R.id.flipper);
    }
}

用这种观点:

<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/flipper"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <include android:id="@+id/first"  layout="@layout/first" />
    <include android:id="@+id/second"  layout="@layout/playerdetailsview" />
</ViewFlipper>

它正确显示了第一个视图,但我希望它连接到一个 java 类,所以我创建了一个 FirstActivity 类,我可以在第一个视图中控制我的所有组件 但是如何将 first.xml 布局与 FirstActivity java 类附加?

【问题讨论】:

  • PlayersActivity 已经是用于控制组件的 Java 类。 FirstActivity 类与 PlayersActivity 有何不同?
  • 将我的功能拆分到不同的类中,以便我可以在其他 viewflippers 中重用该特定布局

标签: android android-activity layout


【解决方案1】:

假设你的新 xml 文件是 foo.xml:

  1. foo.xml 文件放入您的res/layout 目录中。
  2. 在您的新班级中使用setContentView(R.layout.foo);
  3. 在您的 manifest file 中指定您的新课程。

另请参阅declaring layout 上的主题。

【讨论】:

  • 第 3 步假设您的课程是一项活动。
  • 我确实在应用程序节点中添加了 (并遵循了其他步骤)但它仍然没有调用类我定义它吗就在清单中?
  • 您需要指定完全限定名称。假设该类与您的清单位于同一个包中,您可以通过指定为 来缩短(注意前导“.”)
  • @RickNotFred:我已经完成了所有这些。但setContentView(R.layout.FirstActivity);FirstActivity 行仍有问题未解决或不是字段。
【解决方案2】:

1) 创建一个 xml 文件(比如foo.xml)。
2)将foo.xml放到res/layout目录下。
3) 编辑foo.xml 并放入一些android布局代码并保存。例如,

<?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" >
    <ViewFlipper android:id="@+id/viewFlipper1" 
                 android:layout_width="match_parent" 
                 android:layout_height="wrap_content"></ViewFlipper>
</LinearLayout>

4) 在你的新活动类中放

setContentView(R.layout.foo);

用于创建活动see this answer

我猜你的 xml 文件的问题是你没有为活动指定任何布局。

【讨论】:

    【解决方案3】:

    链接两个布局并不难:

    @Override
        public void onClick(View args0) {
        setContentView(R.layout.aardelayout);
    }
    

    【讨论】:

    • 不建议这样做
    【解决方案4】:

    将名称从 FirstActivity 更改为 firstactivity。 布局不接受大写,我遇到了同样的问题。

    【讨论】:

      猜你喜欢
      • 2014-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-16
      相关资源
      最近更新 更多