我已经在developer.android.com上编写了代码,我遇到了一些问题。
首先,在MainActivity.java文件中,它标记“message”,下面带有黄线。
其次,我的代码没有错误,但是当我运行应用程序时,文本框显示“false”,按钮有“false”标题。当我按下按钮时,没有任何反应。 可以请别人帮助我吗?
MainActivity.java:
package com.example.myfirstapp;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends Activity {
public static final String EXTRA_MESSAGE = null;
private static final String message = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void sendMessage(View view) {
Intent intent = new Intent(this, DisplayMessageActivity.class);;
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
}
}
activity_main.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">
<EditText android:id="@+id/edit_message"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@+string/edit_message" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+string/button_send"
android:onClick="sendMessage" />
</LinearLayout>
DisplayMessageActivity.java:
package com.example.myfirstapp;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class DisplayMessageActivity extends Activity {
@Override
public 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(MainActivity.EXTRA_MESSAGE);
//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);
}
}
MyFirstApp Manifest:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myfirstapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".DisplayMessageActivity"
android:label="@string/title_activity_display_message" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myfirstapp.MainActivity" />
</activity>
</application>
</manifest>
感谢帮助者,我真的很喜欢它。
现在这是代码:
MainActivity.java:
package com.example.myfirstapp;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends Activity {
public static final String EXTRA_MESSAGE = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void sendMessage(View view) {
EditText editText = (EditText) findViewById(R.id.edit_message);
Intent intent = new Intent(this, DisplayMessageActivity.class);
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
}
activity_main.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">
<EditText android:id="@+id/edit_message"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/edit_message" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="sendMessage" />
</LinearLayout>
答案 0 :(得分:6)
在消息变量分配之前的编码开始活动中,只有它不显示消息 所以使用以下方式
Intent intent = new Intent(this, DisplayMessageActivity.class);
intent.putExtra(EXTRA_MESSAGE, message);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
startActivity(intent);
答案 1 :(得分:3)
您正在将消息设置为该变量的本地副本。您应该将其分配给静态变量。警告是由于声明后未使用局部变量。要解决此问题,您可以删除String
关键字:
message = editText.getText().toString();
答案 2 :(得分:1)
最终对象(在您的情况下为String)不能重新影响。在您的情况下,这意味着它将始终为null。 Eclipse不理解这一点,因此警告。
然后您的应用中存在多个排序问题。您在发送意图后从EditText 中获取值,但这不起作用。
然后,有阴影。您正在声明隐藏私有变量的消息String。
至于文本,@ + string / edit_message中不需要+。 +表示该元素未明确声明。必须明确声明文本,否则其值无意义。
此外,您使用的EXTRA键是任意的(即您可以给它任意值),但null不是一个好的值。