第二个活动屏幕不显示在secondscreen.xml中定义的布局

时间:2013-11-12 03:05:31

标签: android xml android-layout

我是新来的,也是Android编程的新手。所以对此的任何帮助将不胜感激。

我正在运行Android应用程序(基本上是developer.android.com中给出的示例)并自定义它,在顶部添加一个显示屏幕编号的导航栏。该应用程序的想法是让用户在第一个屏幕中输入消息,并在第二个屏幕中显示消息。我已经能够在第一个屏幕中设置一个显示(1/2)的导航栏,并在第二个屏幕的xml文件中类似地定义了一个布局,该文件应显示导航栏和(2/2)。另外,我添加了一个“停止”按钮,稍后我将使用它。

然而,我面临的问题是 - 第二个屏幕仅显示从用户收到的消息,而不是我想要的布局(导航栏)。我想我已经正确地确定了这个的根本原因,是下面的代码:

//Create the text view 
TextView textView = new TextView(this); 
textView.setTextSize(40); 
textView.setText(message); 

// Set the text view as the activity layout
setContentView(textView);

我认为我在这里使用的setContentView()方法正在显示我从第一个活动收到的消息。当我注释掉这一行时,我会使用以下方法获得所需的第二个屏幕格式:

setContentView(R.layout.activity_second_screen);

但是,我无法完全理解为什么以及如何将两者结合在一起。看起来setContentView(R.layout ..)在没有注释setContentView(textView)时没有按预期工作,这是我想的,正常。

提前谢谢你。

编辑 - 谢谢,CodeMagic提供了这样的快速响应。在我试用你的解决方案之前,这里是完整的创建。我在那里有一些处理“停止”按钮的代码,但还没有实现它。所以请忽略它。

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second_screen);//Change-11/10 6:00 PM


Button buttonStop=(Button)findByViewId(R.id.buttonStop);//Change-11/10 6:00 PM
buttonStop.setOnClickListener(stopListener);//Change-11/10 6:00 PM

Intent intent = getIntent();
String message = intent.getStringExtra(FirstActivity.EXTRA_MESSAGE);
setContentView(R.layout.activity_second_screen);

// Create the text view - this code prints the message typed in first
//screen and displays on second screen, ignoring the xml layout of second screen     
TextView textView = new TextView(this); 
textView.setTextSize(40); 
textView.setText(message); 

// Set the text view as the activity layout
setContentView(textView); //change-11/11-9:00 PM
//setContentView(R.layout.activity_second_screen); 
}

2 个答案:

答案 0 :(得分:1)

我认为您想要的是在运行时之前将TextView添加到activity_second_screen.xml。然后在您的onCreate()中,您可以添加message,因为即使它未显示,您似乎也能正确地获得该EditText et; public void onCreate(Bundle bundle) { super.onCreate(bundle); setContentView(R.layout.activity_second_screen); et = (EditText) findViewById(R.id.editTextID); // where editTextId is //the id you give the //EditText in your layout file et.setText(message); //this will be done after you get your message variable // I assume through an Intent } 。所以做一些像

这样的事情
TextView textView = new TextView(this); 
textView.setTextSize(40); 

然后你不需要

setContentView()

每当您将View设置为setContentView()中的任何内容并覆盖先前在setContentView()中调用的内容时,您多次致电{{1}}

答案 1 :(得分:0)

您可以使用intent.putExtra(key,value)从第一个屏幕发送消息并使用intent.getExtra(key)在第二个屏幕中显示此消息,这将返回您在第一个活动中发送的值,并将显示此信息并显示在哪里想要在你的第二个屏幕

在第一个活动中,下一个按钮使用以下代码

Intent i = new Intent(First.this,Second.class);     i.putExtra(“key”,“value”);     startActivity(ⅰ);

在第二个活动onCreate方法下面写下代码片段

Bundle extras = getIntent().getExtras();
String ans = extras.getString("key");