Я новичок в программировании на Android, и у меня есть действие, которое имеет imageButton, когда его щелкают, он открывает новое действие для результатов с диалоговой темой. Пользователь вводит данные и клики. Затем мне нужно получить эти данные из намерения обновить некоторые изображения в первом действии. Проблема в том, что я продолжаю получать исключение NullPointerException, когда пытаюсь получить доступ к строке в намерении.NullPointerException при попытке получить данные из намерения в onActivityResult
метод1-й на данный вид деятельности OnClick:
public void openDetails(View view){
Intent intent = new Intent(this, FinalAnalysisDialog.class);
//add to backStack
startActivityForResult(intent, 1);
}
второй активности (диалог тематических):
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.final_analysis_activity);
WindowManager.LayoutParams params = getWindow().getAttributes();
//params.x = -100;
params.height = 500;
params.width = 600;
//params.y = -50;
this.getWindow().setAttributes(params);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
//final??
final Spinner dropDown = (Spinner) findViewById(R.id.faResultsDropDown);
dropDown.setSelection(2);
Button submit = (Button) findViewById(R.id.faSubmitButton);
submit.setOnClickListener(new OnClickListener() {
//based on the value of selected item from dropDown (spinner), update the
//progress status picture
@Override
public void onClick(View v) {
Bundle bundle = new Bundle();
//dropDown.getSelectedItemPosition();
String result = dropDown.getSelectedItem().toString();
//String result = "In process";
bundle.putString("result", result);
Intent intent = new Intent();
//intent.putExtras(bundle);
intent.putExtra("result", result);
setResult(RESULT_OK, intent);
finish();
}
});
Тогда я пытаюсь получить строку обратно:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if (resultCode==RESULT_OK && requestCode==1){
//ImageButton mFApic = (ImageButton)home.getView().findViewById(R.id.mInsStepImage);//andrology_home_fragment
ImageButton mFApic = (ImageButton)findViewById(R.id.mInsStepImage);//andrology_home_fragment
View mHomeFApic = (View)findViewById(R.id.maleFA);//male_details
//do something with result
//Intent dataResult = data.getData();
//Bundle bundle =dataResult.getExtras();
//String result = bundle.getString("result");
Bundle extras = data.getExtras();
String result = extras.getString("result");
//String result = data.getStringExtra();
if (result.equals("Not started")){
mFApic.setBackgroundResource(R.drawable.orange_process);
mHomeFApic.setBackgroundResource(R.drawable.orange_process);
}else if (result.equals("In process")){
mFApic.setBackgroundResource(R.drawable.orange_process);
mHomeFApic.setBackgroundResource(R.drawable.orange_process);
}else if (result.equals("Complete")){
mFApic.setBackgroundResource(R.drawable.green_process);
mHomeFApic.setBackgroundResource(R.drawable.green_process);
}else if (result.equals("Problem")){
mFApic.setBackgroundResource(R.drawable.red_process);
mHomeFApic.setBackgroundResource(R.drawable.red_process);
}
}
Я попытался отправить статическую строку «In process», чтобы узнать, может ли проблема получить значение из spinner, но это не сработало. Я искал подобные вопросы, но я не могу заставить это работать. Что мне не хватает? Любая помощь будет принята с благодарностью ..
Вот мой LogCat:
05-09 14:26:31.133: E/AndroidRuntime(4984): FATAL EXCEPTION: main
05-09 14:26:31.133: E/AndroidRuntime(4984): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {com.example.seattleivf/com.example.seattleivf.TabActionBarHomeActivity}: java.lang.NullPointerException
05-09 14:26:31.133: E/AndroidRuntime(4984): at android.app.ActivityThread.deliverResults(ActivityThread.java:3179)
05-09 14:26:31.133: E/AndroidRuntime(4984): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3222)
05-09 14:26:31.133: E/AndroidRuntime(4984): at android.app.ActivityThread.access$1100(ActivityThread.java:140)
05-09 14:26:31.133: E/AndroidRuntime(4984): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1276)
05-09 14:26:31.133: E/AndroidRuntime(4984): at android.os.Handler.dispatchMessage(Handler.java:99)
05-09 14:26:31.133: E/AndroidRuntime(4984): at android.os.Looper.loop(Looper.java:137)
05-09 14:26:31.133: E/AndroidRuntime(4984): at android.app.ActivityThread.main(ActivityThread.java:4895)
05-09 14:26:31.133: E/AndroidRuntime(4984): at java.lang.reflect.Method.invokeNative(Native Method)
05-09 14:26:31.133: E/AndroidRuntime(4984): at java.lang.reflect.Method.invoke(Method.java:511)
05-09 14:26:31.133: E/AndroidRuntime(4984): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)
05-09 14:26:31.133: E/AndroidRuntime(4984): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)
05-09 14:26:31.133: E/AndroidRuntime(4984): at dalvik.system.NativeStart.main(Native Method)
05-09 14:26:31.133: E/AndroidRuntime(4984): Caused by: java.lang.NullPointerException
05-09 14:26:31.133: E/AndroidRuntime(4984): at com.example.seattleivf.TabActionBarHomeActivity.onActivityResult(TabActionBarHomeActivity.java:197)
05-09 14:26:31.133: E/AndroidRuntime(4984): at android.app.Activity.dispatchActivityResult(Activity.java:5347)
05-09 14:26:31.133: E/AndroidRuntime(4984): at android.app.ActivityThread.deliverResults(ActivityThread.java:3175)
05-09 14:26:31.133: E/AndroidRuntime(4984): ... 11 more
Возможно, попробуйте aim.putExtra ("return-data", true); прежде чем вы начнете действовать для получения результатов – JRowan
, вы пробовали мое решение? – Daniel
, какая строка - 197, где вы получаете исключение NullPointerException? Столбец указывает, что «Intent1, который вы возвращаете» имеет дополнительные функции, поэтому 'data.getExtras()' не должен возвращать значение null. Возможно ли, что один из ваших вызовов 'findViewById()' возвращает null, и вы получаете NPE при использовании этого? Ваш код выглядит хорошо для меня. Либо добавьте ведение журнала отладки, чтобы увидеть, где проблема, либо выполните ее с помощью отладчика. –