0

我有 MainActivity 扩展了 Activity,当我打开应用程序和布局(xml)是 main_activity.xml 时默认显示。我想要的是在按钮单击时显示带有他们的类的另一个布局,例如 InfoView。我怎样才能做到这一点?

4

3 回答 3

1

您可以在 main_activity.xml 中添加 FrameLayout 作为具有 id 的新视图的容器,例如 id="@id+/main_activity_container"

然后在你的方法

public void onClick(View view){
    ViewGroup container = (ViewGroup)findVideById(R.id.main_activity_container);
    container.removeAllViews();
     LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View yourNewView = inflater.inflate(R.layout.newView, container,false);
    container.addView(container);
}

片段实现:

public void onClick(View view){
    Fragment fragmentWithYourNewView = initFragment();

    FragmentManager frMan = getSupportFragmentManager();
    FragmentTransaction frTr = frMan.beginTransaction();
    frTr.add(R.id.main_activity_container,fragmentWithYourNewView);
    frTr.commit();
}

在这种情况下,如果用户按下后退按钮,它将返回之前的状态。

于 2013-08-20T15:14:41.767 回答
1

您必须使用意图在活动之间切换。每个与一个 Layout 相关的 Class,被称为 Activity(一般说)。

在这里阅读更多。它很容易使用!

http://www.vogella.com/articles/AndroidIntent/article.html

如果你想保持相同的 Activity,你可以使用 Fragment (这对于初学者来说有点困难,或者只是this.setContentView(R.layout.anyotherlayout)用来改变布局。

于 2013-08-20T14:59:47.060 回答
0

试试这个代码:

boolean isSecondLayout;

public void onClick(View view){
    if (!isSecondLayout) {
        MainActivity.setContentView(R.layout.InfoView);
        isSecondLayout = true;
    } else {
        MainActivity.setContentView(R.layout.main);
        isSecondLayout = false;
    }
}
于 2013-08-20T15:17:00.463 回答