Java 未在编辑文本中显示的字符串

Java 未在编辑文本中显示的字符串,java,android,eclipse,android-intent,Java,Android,Eclipse,Android Intent,我创建了一个intent,它将输入的值输入到两个编辑文本中,并在单击submit按钮时将其作为intent发送给另一个类,下面是代码: Button bSubmit1 = (Button) findViewById(R.id.submit2); //Submit Button bSubmit1.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) {

我创建了一个intent,它将输入的值输入到两个编辑文本中,并在单击submit按钮时将其作为intent发送给另一个类,下面是代码:

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);

它看起来像是空支票中的一个简单输入错误。如果字符串不为null,则当前忽略这些字符串,反之亦然

解决方法应该相对简单。换衣服

if(entry_minutes!=null){
    return;
}

对两个字符串执行此操作后,
EditText
s应该会毫无问题地更新。

使用以下技巧:


类别X:
入口统计:
通过在调试模式下运行应用程序,保留一些调试点并使用F6逐步执行,可以清楚地观察到这一点


发送或接收对象或字符串

发送字符串数据

正如我们已经知道的,我们可以通过意图从一种活动转移到另一种活动

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
发送和接收数据时,红色数据应相同

发送对象

下面是将对象从一个类发送到另一个类的代码。发送对象的一件重要事情是类应该实现可序列化类

下面的红色文本应相同

//MainActivity.java

Intent i = new Intent(MainActivity.this,startActivity.class);

ObjectClassName object = new ObjectClassName();

i.putExtra("THIS", Object);
Intent i = getIntent();
ObjectClassName obj = (ObjectClassName) getIntent().getSerializableExtra("THIS");// TypeCasting needed
接收对象

//startActivity.java

Intent i = new Intent(MainActivity.this,startActivity.class);

ObjectClassName object = new ObjectClassName();

i.putExtra("THIS", Object);
Intent i = getIntent();
ObjectClassName obj = (ObjectClassName) getIntent().getSerializableExtra("THIS");// TypeCasting needed
因为当前行返回您,因为entry_minutes不为null,并且根据您的条件为true。将其更改为等于。 同样,从您的第一个活动开始,您正在调用一个新的活动,如下所示

Intent i=new Intent("com.lukeorpin.theappliancekeeper.MOVINGSTRINGS");
你有EntryStatistics活动的代码,我认为你没有调用EntryStatistics活动

只需将上述意图更改为以下,然后尝试::

Intent i=new Intent(ThisActivityName.this,EntryStatistics.class);


您好,我已经做了更改,但是当我单击第一个类上的submit按钮时,它现在显示一个错误并关闭应用程序。错误显示:04-14 02:10:08.888:E/AndroidRuntime(332):java.lang.RuntimeException:无法启动活动组件信息{com.lukeorpin.theApplicationKeeper/com.lukeorpin.theApplicationKeeper.EntryStatistics}:java.lang.NullPointerException感谢您确定您的编辑文本不为null,是否正确找到视图?存储的值是整数,例如4,如果有帮助的话?可能不是。在调试器中逐步检查代码,并确保对
findviewbyd()
的调用不会返回null。这不是他要找的。这是共享数据的另一种方式。如果我们正确实现,将不会有任何问题。同时,创建更多静态变量也不是一个好主意,因为这将增加变量的范围,需要更多内存。您好,我将其更改为您上面输入的代码(=)但是,当我单击第一个类上的submit按钮时,它现在显示一个错误并关闭应用程序。错误显示:04-14 02:10:08.888:E/AndroidRuntime(332):java.lang.RuntimeException:无法启动活动组件信息{com.lukeorpin.theApplicationKeeper/com.lukeorpin.theApplicationKeeper。‌​EntryStatistics}:java.lang.NullPointerExceptionHello,我将意图代码更改为您上面建议的代码,但是错误仍然存在。Thankscheck检查您的第一个活动中的字符串项\u分钟、字符串项\u小时是否为空?04-14 03:00:47.300:E/AndroidRuntime(373):java.lang.RuntimeException:无法启动活动组件信息{com.lukeorpin.theApplicationKeeper/com.lukeorpin.theApplicationKeeper.EntryStatistics}:java.lang.NullPointerException在第一个活动中,它们是用户输入到两个编辑文本中的值:entry_Minutes=entryminutes.getText().toString();entry_Hours=entryhours.getText().toString();您好,我不完全确定您想让我做什么,我已经在调试模式下启动了应用程序,但是我不确定之后的步骤单击图像。在这里你可以看到一个小下降在左边的线。这表示代码指向调试。在代码中的任何地方,您都希望检查变量的用法、流及其值,并将调试点保留在那里。再次尝试在调试模式下启动应用程序。打开调试模式后,F8将directlt移动到下一个调试点,而f6将逐步移动。因此,您可以了解完整的分步流程。有关发送和接收对象或字符串的更多信息,请更新我的回答有关如何调试应用程序的更多信息,请检查。检查最后一种调试方法。它在许多情况下都会帮助您。放置完整的错误日志entrystatics.java的第34行包含什么,或者放置entrystatics.java的完整代码
Intent i=new Intent("com.lukeorpin.theappliancekeeper.MOVINGSTRINGS");
Intent i=new Intent(ThisActivityName.this,EntryStatistics.class);