2013-05-23 3 views
2

Я не знаю, где я ошибаюсь. все источники информации говорят, что так оно и делается. Простой переход сюда и все. Что мне нужно изменить, чтобы просто передать номер второму моему действию? Вот мой кодНе удается передать данные в другую деятельность

public class MainActivity extends Activity { 

Button returnBtn; 
EditText senderText; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    returnBtn= (Button) findViewById(R.id.button1); 
    senderText = (EditText) findViewById(R.id.editText1); 

    returnBtn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      String s = senderText.getText().toString(); 
      Intent i = new Intent(MainActivity.this, SecondActivity.class); 
      i.putExtra("number", s); 
      startActivity(i); 
     } 
    }); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 
} 

Вторая деятельность

package com.example.returningnumbers; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.widget.EditText; 
import android.widget.TextView; 

public class SecondActivity extends Activity { 

TextView showNum; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.second_info); 
    showNum = (TextView)findViewById(R.id.textView1); 
    Intent intent = getIntent(); 
    String extraData = intent.getExtras().getString("number"); 
    showNum.setText(extraData); 

} 

}

Logcat информация

05-23 19:39:38.520: E/Trace(848): error opening trace file: No such file or directory (2) 
    05-23 19:39:39.639: D/libEGL(848): loaded /system/lib/egl/libEGL_emulation.so 
    05-23 19:39:39.649: D/(848): HostConnection::get() New Host Connection established 0x2a154d08, tid 848 
    05-23 19:39:39.893: D/libEGL(848): loaded /system/lib/egl/libGLESv1_CM_emulation.so 
    05-23 19:39:39.920: D/libEGL(848): loaded /system/lib/egl/libGLESv2_emulation.so 
    05-23 19:39:40.220: W/EGL_emulation(848): eglSurfaceAttrib not implemented 
    05-23 19:39:40.260: D/OpenGLRenderer(848): Enabling debug mode 0 
    05-23 19:39:45.010: D/AndroidRuntime(848): Shutting down VM 
    05-23 19:39:45.030: W/dalvikvm(848): threadid=1: thread exiting with uncaught exception (group=0x40a71930) 
    05-23 19:39:45.120: E/AndroidRuntime(848): FATAL EXCEPTION: main 
    05-23 19:39:45.120: E/AndroidRuntime(848): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.returningnumbers/com.example.returningnumbers.SecondActivity}: java.lang.NullPointerException 
    05-23 19:39:45.120: E/AndroidRuntime(848): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
    05-23 19:39:45.120: E/AndroidRuntime(848): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
    05-23 19:39:45.120: E/AndroidRuntime(848): at android.app.ActivityThread.access$600(ActivityThread.java:141) 
    05-23 19:39:45.120: E/AndroidRuntime(848): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
    05-23 19:39:45.120: E/AndroidRuntime(848): at android.os.Handler.dispatchMessage(Handler.java:99) 
    05-23 19:39:45.120: E/AndroidRuntime(848): at android.os.Looper.loop(Looper.java:137) 
    05-23 19:39:45.120: E/AndroidRuntime(848): at android.app.ActivityThread.main(ActivityThread.java:5041) 
    05-23 19:39:45.120: E/AndroidRuntime(848): at java.lang.reflect.Method.invokeNative(Native Method) 
    05-23 19:39:45.120: E/AndroidRuntime(848): at java.lang.reflect.Method.invoke(Method.java:511) 
    05-23 19:39:45.120: E/AndroidRuntime(848): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
    05-23 19:39:45.120: E/AndroidRuntime(848): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
    05-23 19:39:45.120: E/AndroidRuntime(848): at dalvik.system.NativeStart.main(Native Method) 
    05-23 19:39:45.120: E/AndroidRuntime(848): Caused by: java.lang.NullPointerException 
    05-23 19:39:45.120: E/AndroidRuntime(848): at com.example.returningnumbers.SecondActivity.onCreate(SecondActivity.java:20) 
    05-23 19:39:45.120: E/AndroidRuntime(848): at android.app.Activity.performCreate(Activity.java:5104) 
    05-23 19:39:45.120: E/AndroidRuntime(848): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
    05-23 19:39:45.120: E/AndroidRuntime(848): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
    05-23 19:39:45.120: E/AndroidRuntime(848): ... 11 more 
    05-23 19:39:45.442: D/dalvikvm(848): GC_CONCURRENT freed 100K, 8% free 2719K/2940K, paused 78ms+118ms, total 548ms 
    05-23 19:39:48.102: I/Process(848): Sending signal. PID: 848 SIG: 9` 
+0

Что происходит, когда вы компилируете и запускаете этот код? Кроме того, почему вы отправляете номер как 'String', а не как' int', 'long',' double' или 'float'? –

+0

p.s. Посмотрите * очень * близко на эту строку: 'String extraData = intent.getExtras(). GetString (" nunber ");'. Ты видишь проблему? –

+0

Извините за опечатку, которая была опубликована после редактирования, избавилась от моих комментариев, чтобы очистить код. Ошибка, которую я получаю честно, заключается в том, что она перестает работать. Если я прокомментирую «showNum.setText», он открывает активность просто отлично, не показывая явно обновленного номера. Кроме того, я передаю строку только для отображения строки. – user2414926

ответ

3
String extraData = intent.getExtras().getString("nunber"); 

Должно быть

String extraData = intent.getExtras().getString("number"); 

В своем первом упражнении вы должны

i.putExtra("number", s); 

В вашей второй активности у вас есть

intent.getExtras().getString("nunber"); // keys don't match 

Edit:

 setContentView(R.layout.second_info); // this should come first 
    showNum = (TextView)findViewById(R.id.textView1); // initialize textview 
    Intent intent = getIntent(); 
    String extraData = intent.getExtras().getString("number"); //get value using key 
    showNum.setText(extraData); //set text with the value 
+0

Я отформатировал его так, спасибо за комментарии тоже. Я новичок в этом. Я все еще запускаю программу. :( – user2414926

+0

@ user2414926 вы изменили, как опубликовано в разделе редактирования ?. Если у вас все еще есть проблемы, отправьте данные о лоц-катке аварии, чтобы получить дополнительную помощь. – Raghunandan

+0

Добавлен лог-код, я изменил его точно так же, как у вас есть. – user2414926

1

может быть опечатка Nunber?

String extraData = intent.getExtras().getString("nunber"); 
+1

, а вы сначала отправили ответ. +1 его ошибка опечатки – Raghunandan

+0

Ok.Thank You buddy – JavaNoob

+0

Извините за опечатку, что было в сообщении, отредактировав, избавившись от моих комментариев, чтобы очистить код. не проблема, которую я испытываю. Это когда я попрошу showNum получить строку, это приведет к сбою моей программы.и да extraData получает строку из «числа», а не «nunber», извините об этом еще раз. – user2414926

1

Вы должны позвонить setContentView() перед вызовом findViewById(). Мое личное предпочтение - позвонить setContentView() сразу после super.onCreate(), так что я знаю, что остальная часть метода onCreate() с меньшей вероятностью сломается.

+0

Спасибо. Я остановлюсь на будущих проектах: D – user2414926

Смежные вопросы