Android开发的新手。我有一个培训应用程序,它有一个文本输入字段和一个按钮。如果输入的文本与单词匹配,那么button click
会创建一个显示一些文本的新页面(意图?)。
我遇到的问题是按钮点击创建的新页面与主页面的背景图像不同。我不知道为什么。这是我到目前为止的相关代码位。如果需要,我可以发布更多。
**fragment_welcome_screen.xml**
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:background="@drawable/bg_pic">
<EditText android:id="@+id/edit_message"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/edit_message"
android:layout_weight="1"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="sendMessage"/>
</LinearLayout>
这部分工作正常,显示bg_pic。
WelcomeScreen.java
public void sendMessage(View view) {
// Do something in response to button
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
if ((message.equals("Secret"))||(message.equals("secret"))) {
Intent intent = new Intent(this,
DisplayMessageActivity.class);
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
}
我希望该按钮仅在键入“Secret”时才能工作。
DisplayMessageActivity.java
public class DisplayMessageActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_message);
// Get the message from the intent
Intent intent = getIntent();
//String message = intent.getStringExtra(WelcomeScreen.EXTRA_MESSAGE);
String message = "Test String";
TextView textView = new TextView(this);
textView.setTextSize(24);
textView.setText(message);
// Set the text view as the activity layout
setContentView(textView);
}
我知道我可能在这里做错了。
activity_display_message.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:background="@drawable/test_pic"
tools:context="com.example.varun.myapplication.DisplayMessageActivity">
<TextView android:text="@string/hello_world" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:background="@drawable/test_pic"/>
</RelativeLayout>
我希望test_pic是按下按钮时显示的页面的背景。但事实并非如此。背景只是白色。
我意识到这可能是一个微不足道的问题,但有人可以帮助我吗?我真的很感激。
谢谢。
答案 0 :(得分:3)
为什么在DisplayMessageActivity.java中使用了setContentView()2次。删除secound setcontentview()并为activity_display_message.xml中的textview指定一些id。这是为textview分配id的代码。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/test_pic"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.varun.myapplication.DisplayMessageActivity">
<TextView
android:id="@+id/mytv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/test_pic"
android:text="@string/hello_world"/>
获取带有id引用的textview,如
TextView textView = (TextView)findViewById(R.id.mytv);
并使用此textview参考显示上一个活动的消息,如
textView.setText(message);
我希望这对你有所帮助。
答案 1 :(得分:1)
更改代码
public class DisplayMessageActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_message);
// Get the message from the intent
Intent intent = getIntent();
//String message = intent.getStringExtra(WelcomeScreen.EXTRA_MESSAGE);
String message = "Test String";
TextView textView = (TextView)findViewByID(R.id.textMessage)
textView.setTextSize(24);
textView.setText(message);
}
并为textview添加id
<TextView android:id="@+id/textMessage"
android:text="@string/hello_world" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:background="@drawable/test_pic"/>
答案 2 :(得分:0)
删除它 的setContentView(TextView的);
答案 3 :(得分:0)
为什么你写了 setContentView(textView); line?
只需删除上面给定的代码行,就完成了。
答案 4 :(得分:0)
尝试这样,
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:background="@drawable/test_pic"
tools:context="com.example.varun.myapplication.DisplayMessageActivity">
<TextView android:id="@+id/txtmsg"
android:text="@string/hello_world" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:background="@drawable/test_pic"/>
</RelativeLayout>
public class DisplayMessageActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_message);
// Get the message from the intent
Intent intent = getIntent();
//String message = intent.getStringExtra(WelcomeScreen.EXTRA_MESSAGE);
String message = "Test String";
TextView textView = (TextView) findViewById(R.id.txtmsg);
textView.settext(message);
}