【问题标题】:Cant use more then 2 layouts不能使用超过 2 个布局
【发布时间】:2012-02-07 19:55:47
【问题描述】:

我正在尝试制作一个具有许多 xml 布局的 android 应用程序,但我在这里遇到了问题。 问题从第二个按钮开始,然后应用程序崩溃。

public class MonkeyQuest_androidActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final Button newGame = (Button) findViewById(R.id.newGame);
    newGame.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            setContentView(R.layout.name);
            final Button setName= (Button) findViewById(R.id.setName);
            setName.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    setContentView(R.layout.Menu);
                }
            });
        }
    });
}

}

【问题讨论】:

  • “许多 XML 布局”是什么意思?你的意思是你需要很多活动吗?看起来您正试图为一项活动多次更改布局?你是什​​么意思“问题从第二个按钮开始”?什么第二个按钮?你有例外吗?有什么例外?请发布 logcat(仅相关位)以及有关您要实现的目标和原因的更多信息。

标签: android class layout button crash


【解决方案1】:

不要将内容视图设置为新布局,而是启动一个新活动并在该活动的onCreate() 中设置内容视图,方法与此活动相同。

通过以下方式启动新活动:

Intent intent = new Intent(this, NewActivity.class);
startActivity(intent);

阅读更多:http://www.javacodegeeks.com/2010/11/android-full-app-part-5-launch-activity.html#ixzz1ljJohpib

否则,您在活动中声明的任何视图都将位于新的膨胀视图后面(除非重新实例化),这也可能导致许多其他问题。

【讨论】:

    【解决方案2】:

    您不得在每个活动中多次致电setContentView()

    如果你想切换布局,你要么需要创建一个新的活动进入,要么将所有你想要的视图放入你的一个布局中,并使用 setVisibility() 或其他东西隐藏/显示相关的视图像ViewFlipper

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-21
      • 2020-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多