我创建了一个intent,它将输入的值输入到两个Edit Text中,并在单击提交按钮时将它们作为意图发送到另一个类,这里是代码:
Button bSubmit1 = (Button) findViewById(R.id.submit2); //Submit Button
bSubmit1.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
String entry_Minutes = entryminutes.getText().toString();
String entry_Hours = entryhours.getText().toString();
Intent i=new Intent("com.lukeorpin.theappliancekeeper.MOVINGSTRINGS");
i.putExtra("Entry_Minutes", entry_Minutes);
i.putExtra("Entry_Hours", entry_Hours);
startActivity(i);
然后开始下一个类中的活动,其中意图中发送的字符串应该显示在另外两个编辑文本中,但是两个编辑文本框中没有出现任何内容。以下是另一个类中代码的另一部分:
public class EntryStatistics extends Activity {
EditText hoursBox, minutesBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.entrystatistics);
hoursBox = (EditText)findViewById(R.id.entry_hours);
minutesBox = (EditText)findViewById(R.id.entry_minutes);
String entry_minutes = getIntent().getStringExtra("Entry_Minutes");
if(entry_minutes!=null){
return;
}
String entry_hours = getIntent().getStringExtra("Entry_Hours");
if(entry_hours!=null){
return;
}
hoursBox.setText(entry_hours);
minutesBox.setText(entry_minutes);
任何人都可以告诉我为什么字符串中的值没有显示在编辑文本中吗?什么都没有显示出来。感谢
以下是完整的错误消息:
04-14 03:00:47.300: E/AndroidRuntime(373): FATAL EXCEPTION: main
04-14 03:00:47.300: E/AndroidRuntime(373): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lukeorpin.theappliancekeeper/com.lukeorpin.theappliancekeeper.EntryStatistics}: java.lang.NullPointerException
04-14 03:00:47.300: E/AndroidRuntime(373): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
04-14 03:00:47.300: E/AndroidRuntime(373): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
04-14 03:00:47.300: E/AndroidRuntime(373): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
04-14 03:00:47.300: E/AndroidRuntime(373): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
04-14 03:00:47.300: E/AndroidRuntime(373): at android.os.Handler.dispatchMessage(Handler.java:99)
04-14 03:00:47.300: E/AndroidRuntime(373): at android.os.Looper.loop(Looper.java:123)
04-14 03:00:47.300: E/AndroidRuntime(373): at android.app.ActivityThread.main(ActivityThread.java:3683)
04-14 03:00:47.300: E/AndroidRuntime(373): at java.lang.reflect.Method.invokeNative(Native Method)
04-14 03:00:47.300: E/AndroidRuntime(373): at java.lang.reflect.Method.invoke(Method.java:507)
04-14 03:00:47.300: E/AndroidRuntime(373): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-14 03:00:47.300: E/AndroidRuntime(373): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-14 03:00:47.300: E/AndroidRuntime(373): at dalvik.system.NativeStart.main(Native Method)
04-14 03:00:47.300: E/AndroidRuntime(373): Caused by: java.lang.NullPointerException
04-14 03:00:47.300: E/AndroidRuntime(373): at com.lukeorpin.theappliancekeeper.EntryStatistics.onCreate(EntryStatistics.java:34)
04-14 03:00:47.300: E/AndroidRuntime(373): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-14 03:00:47.300: E/AndroidRuntime(373): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
04-14 03:00:47.300: E/AndroidRuntime(373): ... 11 more
这是第34和35行:
hoursBox.setText(entry_hours);
minutesBox.setText(entry_minutes);
答案 0 :(得分:1)
在您的空检查中,IT看起来像一个简单的拼写错误。你现在忽略了字符串,如果它们不是null,那么它应该是相反的。
修复应该相对简单。只需改变
if(entry_minutes!=null){
return;
}
到
if(entry_minutes==null){
return;
}
对两个字符串完成此操作后,EditText
应该没有问题地更新。
答案 1 :(得分:0)
使用这个技巧:
static String entry_Minutes="",entry_Hours="";
Button bSubmit1 = (Button) findViewById(R.id.submit2); //Submit Button
bSubmit1.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
entry_Minutes = entryminutes.getText().toString();
entry_Hours = entryhours.getText().toString();
Intent i=new Intent("com.lukeorpin.theappliancekeeper.MOVINGSTRINGS");
startActivity(i);
public class EntryStatistics extends Activity {
EditText hoursBox, minutesBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.entrystatistics);
hoursBox = (EditText)findViewById(R.id.entry_hours);
minutesBox = (EditText)findViewById(R.id.entry_minutes);
hoursBox.setText(ClassX.entry_Hours);
minutesBox.setText(ClassX.entry_Minutes);
答案 2 :(得分:0)
通过保持一些调试点并使用F6逐步执行,可以通过在调试模式下运行应用程序来逐步清楚地观察到这一点。
发送或接收对象或字符串
发送字符串数据
我们已经知道我们可以使用Intents从一个Activity转移到另一个Activity。
Intent i = new Intent(MainActivity.this,GoActivity.class);
String data = “bla bla”;// Data String to send
i.putExtra("DATA",data );
接收数据
我们可以收到上面的字符串数据,如下所示。
Intent i = getIntent();
String data = i.getStringExtra("DATA");// you well get the String data i.e., BLA BLA
发送和接收数据时,红色数据应该相同。
发送对象
以下是将Object从一个类发送到另一个类的代码。发送Object的一个重要事情是类应该实现Serializable类。
以下红色文本应该相同。
// MainActivity.java
Intent i = new Intent(MainActivity.this,startActivity.class);
ObjectClassName object = new ObjectClassName();
i.putExtra("THIS", Object);
接收对象
// startActivity.java
Intent i = getIntent();
ObjectClassName obj = (ObjectClassName) getIntent().getSerializableExtra("THIS");// TypeCasting needed
答案 3 :(得分:0)
String entry_minutes = getIntent().getStringExtra("Entry_Minutes");
if(entry_minutes==null){
return;
}
String entry_hours = getIntent().getStringExtra("Entry_Hours");
if(entry_hours==null){
return;
}
因为当前行返回,因为entry_minutes不为null并且根据您的条件为true。把它改成等于。 同样,从您的第一个活动开始,您正在调用下面的新活动
Intent i=new Intent("com.lukeorpin.theappliancekeeper.MOVINGSTRINGS");
你有EntryStatistics活动的代码,我认为你没有调用EntryStatistics活动。
只需将上述意图更改为以下内容并尝试::
Intent i=new Intent(ThisActivityName.this,EntryStatistics.class);