Here’s a section of my code :
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_settings:
startActivityForResult(new Intent(MainActivity.this,Settings.class),1);
break;
}
return true;
}
@Override
public void onActivityResult(int requestCode,int resultCode,Intent data) {
Toast.makeText(getBaseContext(),requestCode, Toast.LENGTH_SHORT); // This was causing the error. See the fantastic answer that's been provided for details. Comment out this this and it works !
if(requestCode==1) {
if(resultCode==RESULT_OK)
{
String extraData=data.getData().toString();
minD=Integer.parseInt(extraData);
Toast.makeText(getBaseContext(),minD, Toast.LENGTH_SHORT);
}
}
}
Here’s the code for Settings.java
package com.example.com.draft1;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class Settings extends Activity {
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.settings);
Button setbtn = (Button) findViewById(R.id.SetminDistance);
setbtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Intent data=new Intent();
EditText mind=(EditText) findViewById(R.id.minDistance);
String minDis =mind.getText().toString();
Intent data = new Intent();
data.setData(Uri.parse(minDis));
Toast.makeText(getBaseContext(), minDis, Toast.LENGTH_SHORT).show();
// intent.putExtra("minD", minDis);
if (getParent() == null) {
setResult(RESULT_OK, data);
} else {
getParent().setResult(RESULT_OK, data);
}
finish();
/* setResult(RESULT_OK, data);
finish();*/
}
});
}
}
Now when I choose the menu option for Settings , the required activity opens up perfectly , however , when i attempt to return data , it leads to a force close
Here’s the Logcat reading that shows the error :
09-29 16:03:29.366: E/AndroidRuntime(766): FATAL EXCEPTION: main
09-29 16:03:29.366: E/AndroidRuntime(766): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=65 }} to activity {com.example.com.draft1/com.example.com.draft1.MainActivity}: android.content.res.Resources$NotFoundException: String resource ID #0x1
09-29 16:03:29.366: E/AndroidRuntime(766): at android.app.ActivityThread.deliverResults(ActivityThread.java:2532)
09-29 16:03:29.366: E/AndroidRuntime(766): at android.app.ActivityThread.handleSendResult(ActivityThread.java:2574)
09-29 16:03:29.366: E/AndroidRuntime(766): at android.app.ActivityThread.access$2000(ActivityThread.java:117)
09-29 16:03:29.366: E/AndroidRuntime(766): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:961)
09-29 16:03:29.366: E/AndroidRuntime(766): at android.os.Handler.dispatchMessage(Handler.java:99)
09-29 16:03:29.366: E/AndroidRuntime(766): at android.os.Looper.loop(Looper.java:130)
09-29 16:03:29.366: E/AndroidRuntime(766): at android.app.ActivityThread.main(ActivityThread.java:3683)
09-29 16:03:29.366: E/AndroidRuntime(766): at java.lang.reflect.Method.invokeNative(Native Method)
09-29 16:03:29.366: E/AndroidRuntime(766): at java.lang.reflect.Method.invoke(Method.java:507)
09-29 16:03:29.366: E/AndroidRuntime(766): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-29 16:03:29.366: E/AndroidRuntime(766): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-29 16:03:29.366: E/AndroidRuntime(766): at dalvik.system.NativeStart.main(Native Method)
09-29 16:03:29.366: E/AndroidRuntime(766): Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x1
09-29 16:03:29.366: E/AndroidRuntime(766): at android.content.res.Resources.getText(Resources.java:201)
09-29 16:03:29.366: E/AndroidRuntime(766): at android.widget.Toast.makeText(Toast.java:258)
09-29 16:03:29.366: E/AndroidRuntime(766): at com.example.com.draft1.MainActivity.onActivityResult(MainActivity.java:570)
09-29 16:03:29.366: E/AndroidRuntime(766): at android.app.Activity.dispatchActivityResult(Activity.java:3908)
09-29 16:03:29.366: E/AndroidRuntime(766): at android.app.ActivityThread.deliverResults(ActivityThread.java:2528)
09-29 16:03:29.366: E/AndroidRuntime(766): ... 11 more
Why am i encountering a force close here ?
I’d really appreciate help here
Thanks for the interest in the question
As Per Suggestions
if(requestCode==1) {
if(resultCode==RESULT_OK)
{
//String extraData=data.getData().toString();
//minD=Integer.parseInt(extraData);
Toast.makeText(getBaseContext(),String.valueOf(requestCode), Toast.LENGTH_SHORT).show();
}
If you see Toast.makeText
So if you giving second parameter as
intthen system will look for this id in R.java but irony is actually you wanting to print number so just cast your second parameter toStringi.e. thisChange Toast line code to
or