可以使用现有布局创建新的 Android 活动吗?

Posted

技术标签:

【中文标题】可以使用现有布局创建新的 Android 活动吗?【英文标题】:Can a new Android activity be created using an existing layout? 【发布时间】:2013-06-27 22:15:34 【问题描述】:

在 Eclipse 中使用向导创建新的 android 活动时,似乎必须创建新的布局。每当我使用现有布局创建新的 Android 活动时,我必须创建一个虚拟布局,使用 setContentView() 更改 onCreate() 中的布局,然后删除虚拟布局。

最好的方法是什么?

【问题讨论】:

你可以复制现有的 Activity 并将其粘贴为 eclipse 中的新 Activity 而不是总是使用向导吗? 如果我这样做,我将不得不手动修改 AndroidManifest.xml。我觉得不会更好了。 哦,我忘了那部分了。 :-) @Wand:还是感谢您在这里提供帮助。 【参考方案1】:

已编辑帖子:如果您点击文件 > 新建 > 其他,您可以选择“Android > Android Activity”。 单击下一步,并填写正确的数据。如果您到达“预览”部分,您可以选择必须执行的更改。我将新活动称为“SecondActivity”,这意味着布局文件将被称为“second_activity.xml”。如果您在列表中取消选中此文件,则不会创建此文件。然后只需将您的 setContentView 更改为您想要的文件。

【讨论】:

是的,这正是我想要的。每次创建文件,然后删除它时,我都感觉很糟糕。 我已经尝试了两次,尽管我没有选中它,但向导仍然会创建一个新的布局文件。我想知道这是否是一个错误。【参考方案2】:

您过于依赖 Eclipse 向导。做一个程序员。右键单击包添加新的“类”给它一个名字。扩展活动。覆盖 onCreate 方法。在设置内容视图中使用已经创建的布局。

编辑:这里有确切的说明

右键单击您的包。单击新建。选择班级。

给你的班级起个名字,点击确定。

package com.example.fakeapp;

public class FakeActivity 


现在扩展 Activity 添加 onCreate 和 onCreateOptionsMenu 在设置内容视图中使用您需要的布局。

package com.example.fakeapp;

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

public class FakeActivity extends Activity
    
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.other_activity); //use whatever layout you want.
    

    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    

添加到标签之间的清单不要忘记在你的 res/strings 中创建你的标题。

    <activity
        android:name="com.example.fakeapp.Fakeactivity"
        android:label="@string/title_activity_fakeactivity" >
    </activity>

我不是故意要显得傲慢。我的意思是了解向导在做什么,这样你就可以重新创建它,而不是依赖它来为你做所有事情。如果您害怕编辑清单,那么这是您需要学习的东西。

【讨论】:

他不想失去更新清单的功能。你的回答有点自大。 你怎么不能自己更新清单。添加活动真的很简单。您可以避免创建额外的垃圾布局然后将其删除。 感谢您的详细说明。我的目的是找到使用现有布局创建新活动的最快、最可靠的方法。 如果您不怕输入代码,我的方法是最直接的。最终,您可以在任何活动中使用任何布局,方法是在 setcontentview 中分配或在运行时对其进行膨胀。 我完全不介意输入代码,因为我整天都在这样做。我可以在不到 20 秒的时间内使用带有向导的现有布局创建一个新活动,而不必担心由于拼写错误导致清单、相应菜单文件和 strings.xml 中的相关值等不一致。再次感谢您。

以上是关于可以使用现有布局创建新的 Android 活动吗?的主要内容,如果未能解决你的问题,请参考以下文章

Android四大组件之Activity(活动)及其布局的创建与加载布局

Android Studio 入门——001 android基本细节

Android:创建自定义视图并将其动态添加到布局中

如何在 Android 工作室中从现有活动创建片段

每个活动都必须有一个布局吗?

android学习-1