Sun*_*nny 0 android bundle android-intent android-asynctask
我将值传递给另一个活动,但始终为null值
public class SatelliteDirectActivity extends Activity {
private Intent intent;
private Bundle b;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
intent = new Intent(SatelliteDirectActivity.this,ClsMainActivitySatelliteDirect.class);
b = new Bundle();
setContentView(R.layout.initial_splash_screen);
boolean bCheckInternetConnectivity = checkInternetConnection();
if(!bCheckInternetConnectivity)
{
Toast.makeText(this, "Please ensure that you have a internet connectivity", Toast.LENGTH_SHORT);
finish();
}
else
{
new GetCountryInformation().execute();
}
startActivity(intent);
finish();
}
private boolean checkInternetConnection() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
// test for connection
if (cm.getActiveNetworkInfo() != null
&& cm.getActiveNetworkInfo().isAvailable()
&& cm.getActiveNetworkInfo().isConnected()) {
return true;
} else {
Log.v("ERROR_LOG", "Internet Connection Not Present");
return false;
}
}
public class GetCountryInformation extends AsyncTask<String, Void,String> {
protected void onPreExecute() {
super.onPreExecute();
}
/* protected void onProgressUpdate(Integer... progress) {
//setProgressPercent(progress[0]);
}*/
@Override
protected String doInBackground(String... params) {
JSONObject mJsonObject = ClsGetJsonFunction.getJSONfromURL("http://www.sachdevbros.com/sdandroid/videos/country.php");
String [] sCountryNames = null;
String [] sCountryCid = null ;
try
{
JSONArray mJsonArray = mJsonObject.getJSONArray("results");
sCountryNames= new String[mJsonArray.length()];
sCountryCid= new String[mJsonArray.length()];
for(int icount = 0 ; icount <mJsonArray.length()-1; icount++)
{
JSONObject mJsonObject2 = mJsonArray.getJSONObject(icount);
sCountryNames [icount] = mJsonObject2.getString("country");
sCountryCid[icount] = mJsonObject2.getString("cid");
// Log.v("JSON", ClsGlobalConstants.sGLB_sCountryNames[icount]+ClsGlobalConstants.sGLB_sCountryCid[icount]);
}
}catch(JSONException je)
{
Log.v("ERROR_TAG", ""+je);
}
b.putStringArray("cou", sCountryNames);
b.putStringArray("cid", sCountryCid);
intent.putExtras(b);
return null;
}
protected void onPostExecute(Void... aa) {
super.onPostExecute(null);
// showDialog("Downloaded " + result + " bytes");
}
}
Run Code Online (Sandbox Code Playgroud)
接收这个
final String country[] =this.getIntent().getStringArrayExtra("cou");
String cid[] =this.getIntent().getStringArrayExtra("cid");
Run Code Online (Sandbox Code Playgroud)
这是因为,你在启动AsyncTask之后立即启动其他活动,它会导致捆绑空,所以如果可能的话,将你的其他活动代码放入AsyncTask's postExecute()..然后你可以在其他活动中获取值.
为此传递AsyncTask中的活动引用并使用该引用调用startActivity()..
protected void onPostExecute(Void... aa) {
super.onPostExecute(null);
// showDialog("Downloaded " + result + " bytes");
mContext.startActivity(intent);
mContext.finish();
}
Run Code Online (Sandbox Code Playgroud)