2013-04-12 3 views
0

Я разрабатываю проект Android, в котором я должен отправлять данные из одной активности в другую. Но когда я отправляю данные из одной активности в другую, она не отправляет данные из одной активности в другую.намерение не возвращает данные

Часть кода, получающего данные из другой:

Intent intent=getIntent(); 
String str,str1; 
str=intent.getExtras().getString("phoneno"); 
Log.d("completre", "complete"); 
phonePhoneno.setText(str); 

Log.d("complete","complete1"); 



if(intent.getExtras()==null) { 
    txtMessage.setText("u duffer write program properly"); 
} else { 
    str1=intent.getExtras().toString(); 
    txtMessage.setText(str1); 
    Log.d("complete","complete2"); 
} 

Часть кода, я использую для передачи данных от другой деятельности:

if(v.getId()==R.id.main_act) { 
    String str=txtText.getText().toString(); 
    Intent intent=new Intent(getApplicationContext(), MainActivity.class); 
    intent.putExtra("username",str); 
    intent.putExtra("phoneno", phoneno); 
    startActivity(intent); 
} 

При попытке получить данные, нажав кнопка это принудительное закрытие.

в этом проекте у меня есть два вида деятельности в первом действии, я читаю номер телефона. ans отправляет его на вторую активность только для сохранения в будущем. во втором действии у меня есть текст редактирования, в котором я добавляю текст через систему распознавания голоса, после чего я отправляю оба телефона данных и редактирую текстовое поле от 2-го действия до 1-го действия кнопкой clcking, как показано выше (во второй части кода). он посылает номер телефона, но не редактирует текстовое содержимое (догадка), когда я нажимаю кнопку завершения (чтобы заполнить оба поля в 1-й активности), тогда он добавляет номер телефона в поле «нет», но не добавляет сообщение.

последнего журнал кошка , когда приложение не замыкаться

04-13 13:33:46.206: I/TextToSpeech(834): Sucessfully bound to com.svox.pico 
04-13 13:33:46.206: W/TextToSpeech(834): speak failed: not bound to TTS engine 
04-13 13:33:47.005: I/TextToSpeech(834): Connected to ComponentInfo{com.svox.pico/com.svox.pico.PicoService} 
04-13 13:33:47.125: E/test(834): hhhhhhhhhhhhhhhhh 
04-13 13:33:47.125: I/Choreographer(834): Skipped 174 frames! The application may be doing too much work on its main thread. 
04-13 13:33:47.575: I/Choreographer(834): Skipped 69 frames! The application may be doing too much work on its main thread. 
04-13 13:33:56.535: W/IInputConnectionWrapper(834): showStatusIcon on inactive InputConnection 
04-13 13:33:56.535: I/Choreographer(834): Skipped 174 frames! The application may be doing too much work on its main thread. 
04-13 13:33:56.975: D/dalvikvm(834): GC_CONCURRENT freed 127K, 9% free 3017K/3288K, paused 37ms+5ms, total 108ms 
04-13 13:34:00.274: V/(834): Got a contact result: content://com.android.contacts/data/3 
04-13 13:34:00.674: V/(834): Got phone no : (986) 743-561 
04-13 13:34:00.914: I/Choreographer(834): Skipped 164 frames! The application may be doing too much work on its main thread. 
04-13 13:34:01.244: I/Choreographer(834): Skipped 37 frames! The application may be doing too much work on its main thread. 
04-13 13:34:05.494: I/Choreographer(834): Skipped 139 frames! The application may be doing too much work on its main thread. 
04-13 13:34:05.974: I/Choreographer(834): Skipped 60 frames! The application may be doing too much work on its main thread. 
04-13 13:34:12.965: I/TextToSpeech(834): Sucessfully bound to com.svox.pico 
04-13 13:34:12.965: W/TextToSpeech(834): speak failed: not bound to TTS engine 
04-13 13:34:13.065: I/TextToSpeech(834): Connected to ComponentInfo{com.svox.pico/com.svox.pico.PicoService} 
04-13 13:34:13.155: E/test(834): hhhhhhhhhhhhhhhhh 
04-13 13:34:13.155: I/Choreographer(834): Skipped 35 frames! The application may be doing too much work on its main thread. 
04-13 13:34:14.425: I/Choreographer(834): Skipped 308 frames! The application may be doing too much work on its main thread. 
04-13 13:34:15.235: I/Choreographer(834): Skipped 95 frames! The application may be doing too much work on its main thread. 
04-13 13:34:16.265: I/Choreographer(834): Skipped 31 frames! The application may be doing too much work on its main thread. 
04-13 13:34:20.025: D/completre(834): complete 
04-13 13:34:20.035: D/AndroidRuntime(834): Shutting down VM 
04-13 13:34:20.035: W/dalvikvm(834): threadid=1: thread exiting with uncaught exception (group=0x40a71930) 
04-13 13:34:20.085: E/AndroidRuntime(834): FATAL EXCEPTION: main 
04-13 13:34:20.085: E/AndroidRuntime(834): java.lang.NullPointerException 
04-13 13:34:20.085: E/AndroidRuntime(834):  at com.example.sms.MainActivity.onClick(MainActivity.java:322) 
04-13 13:34:20.085: E/AndroidRuntime(834):  at android.view.View.performClick(View.java:4204) 
04-13 13:34:20.085: E/AndroidRuntime(834):  at android.view.View$PerformClick.run(View.java:17355) 
04-13 13:34:20.085: E/AndroidRuntime(834):  at android.os.Handler.handleCallback(Handler.java:725) 
04-13 13:34:20.085: E/AndroidRuntime(834):  at android.os.Handler.dispatchMessage(Handler.java:92) 
04-13 13:34:20.085: E/AndroidRuntime(834):  at android.os.Looper.loop(Looper.java:137) 
04-13 13:34:20.085: E/AndroidRuntime(834):  at android.app.ActivityThread.main(ActivityThread.java:5041) 
04-13 13:34:20.085: E/AndroidRuntime(834):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-13 13:34:20.085: E/AndroidRuntime(834):  at java.lang.reflect.Method.invoke(Method.java:511) 
04-13 13:34:20.085: E/AndroidRuntime(834):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
04-13 13:34:20.085: E/AndroidRuntime(834):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
04-13 13:34:20.085: E/AndroidRuntime(834):  at dalvik.system.NativeStart.main(Native Method) 

я еще кой-что я хотел бы упомянуть о том, что когда я вернулся из второй активности в основную записи без какого-либо сообщения, что я Жду» t задано содержание текста редактирования, и я попытался отправить содержимое в первую активность, как показано во второй части кода, в котором он работал ... в идеале он должен заставить себя закрыть, поскольку текст редактирования не содержит данных .. я не мог понять, почему это не так сила закрытия в то время.

+2

Добавьте StackTrace, так что мы можем увидеть, какие исключения она бросает - также, если вы могли бы указать линию, что происходит сбой приложения. – Darwind

+0

Должен ли я обновить вопрос i.e, я должен добавить еще часть кода, чтобы он дал понять? – sid

+0

Да, пожалуйста ;-) – Darwind

ответ

1

Ok, после того, как немного копания, я обнаружил, что проблема была ...

Проблема не имеет ничего общего со значениями из Bundle.

Проблема заключается в том, что вы пытаетесь вызвать setText() и getText() на качестве EditText называется phonePhoneno. Это поле никогда не было инициализировано в методе onCreate для MainActivity.

Таким образом, чтобы это исправить NullPointerException, инициализировать phonePhoneno к правильному EditText внутри вашего main.xml для MainActivity и вы хорошо ;-)

Может быть, это должно инициализироваться, как это?

phonePhoneno = (EditText) findViewById(R.id.phonenofromcontact); 

Я не знаю?

Это выглядит как тип или «автозаполнение» ошибка, чтобы быть честными: P

Просто маленький совет: очистить ваш код, и вы, вероятно, нашли Exception на собственном ;-)

+0

Большое спасибо :-) – sid

+0

и да, проблема с правильным решением проблемы может быть легко найдена, но .... вы знаете, проверяя код v, как правило, пропустите легкую часть: иногда мне приходится платить за это (это стоило мне 1 день в этом дело ;) :) – sid

1

Bundle Использование:

Используйте это, чтобы получить переменные из вашей Intent:

Intent intent = getIntent(); 
final Bundle bundle = intent.getExtras(); 
if(bundle != null) { 
    String username = bundle.getString("username"); 
    String phoneno = bundle.getString("phoneno"); 
} 

Force Закрыть:

  • Убедитесь, что переменные str и phoneno являются не null fo r Ваши intent.putExtra() команды. Это может привести к закрытию вашей силы.
  • Убедитесь, что id «main_act» является уникальный идентификатор определен в файле макета XML для вашей кнопки.
+0

На самом деле это не совсем так - у 'Bundle' есть' toString() ', поэтому он возвращает человеческую читаемую строку или, как говорится в документации:' Возвращает строку, содержащую краткое, удобное для человека описание этого объекта. '- также он проверил «нуль» - просто сказал ;-) – Darwind

+0

Хе-хе - извините, вы не меняли ответ ;-) – Darwind

+0

этот код не помогает :( – sid

0

Дэвид Манперль, чтобы сказать, что вы что-то сделали неправильно, вы имеете в виду, где меняются в намерении. Если у вас есть намерение, это не поможет, вы можете использовать другой способ. Существуют и другие способы передачи данных другой деятельности.

Например:

  1. SharedPreferences

  2. Объект Application является еще одним способом, хотя, и это иногда легче, когда речь идет в том же состоянии по нескольким деятельности (в отличие от того, чтобы получить/поместите его повсюду), или объекты более сложные, чем примитивы и строки. Вы можете расширить приложение, а затем установить/получить все, что вы хотите, и получить доступ к нему из любого Activity (в том же приложении) с помощью getApplication().

Или попытаться получить данные из Intent в OnCreate метод деятельности

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