我是新来的,也是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);
}
答案 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");