passing data when returning to main activity(Inten

2019-03-04 00:48发布

I'm new to android . This might be the simplest question of all !! but I couldn't figure out whats gone wrong here,

I was trying to create a basic example for passing values through intent.So I need to pass data to Main Activity when I close my Second Activity here is the code

IntentTest1(MainActivity)

public void onClick(View arg0) {
            // TODO Auto-generated method stub
MyClass.myToast("Clicked",getApplicationContext());
Intent myIntent = newIntent(getApplicationContext(),SecondPage.class);
startActivityForResult(myIntent,0); 
        }
    });
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub

    if(requestCode == 0 && resultCode == RESULT_OK)
        if(data.hasExtra("title"))
        {
    MyClass.myToast(""+resultCode+""+requestCode, getApplicationContext());
    String str = data.getExtras().getString("title").toString();
    titleText.setText(str); 
        }
    super.onActivityResult(requestCode, resultCode, data);
}

SeconPage

public void finish()
{

Intent returnIntent = new Intent(getApplicationContext(),Intenttest1.class);
returnIntent.putExtra("Welcome Back!!","title");
setResult(RESULT_OK, returnIntent);
    //      below was for tosting and it works!!
MyClass.myToast("finally",getApplicationContext());
super.finish();
}

I think there is some mistake in receiving the intent ,I couldn't figure out. Answers and Advises are needed thanks in advance

3条回答
够拽才男人
2楼-- · 2019-03-04 00:55

The first problem is when you create your Intent to send back to the first Activity. Since you are using startActivityForResult() you want to use an empty constructor. So change

Intent returnIntent = new Intent(getApplicationContext(),Intenttest1.class);

to

Intent returnIntent = new Intent();

The second problem is that you have your key/value pair backwards in your Extras. The key, which is what you look for with getStringExtra() etc... should be the first in the pair. So this

returnIntent.putExtra("Welcome Back!!","title");

should be

returnIntent.putExtra("title", "Welcome Back!!");

Off-topic

I would consider using relevant names as your params. For example, I would change your onClick() from

public void onClick(View arg0)

to

public void onClick(View view)  

view, v, or something similar makes more sense since the argument actually is a view and it will be more readable

I would also recommend using the Activity Context for your Intent which you can get from the argument (the View) passed into onClick(). So change it to

public void onClick(View v) 
{
     MyClass.myToast("Clicked",getApplicationContext());
     Intent myIntent = newIntent(v.getContext(),SecondPage.class);
     startActivityForResult(myIntent,0); 
查看更多
倾城 Initia
3楼-- · 2019-03-04 01:12

You have to use

if(data.hasExtra("Welcome Back!!"))

instead of

if(data.hasExtra("title")) 

in onActivityResult. Welcome Back!! is the key and title is the value for that key in your extras.

查看更多
走好不送
4楼-- · 2019-03-04 01:13

try this code:

Intent returnIntent = new Intent(getApplicationContext(),Intenttest1.class);
returnIntent.putExtra("Key name here in ur case title","Value name");
setResult(RESULT_OK, returnIntent);
//      below was for tosting and it works!!
 MyClass.myToast("finally",getApplicationContext());
super.finish();

}

查看更多
登录 后发表回答