0
從調試中我可以看到,在調用startActivity(Intent)
時,附加項實際上是在意圖中。但是,一旦getIntent()
在新活動中被調用,額外消失。在添加AsyncTask
來處理長時間計算之前,intent的額外功能還不錯。開始新活動後,意向附加項爲空
下面是啓動新的活動RecipeListActivity
public class Fragment extends android.support.v4.app.Fragment {
private Entity mEntity;
private class RecipeOperation extends AsyncTask<Void, Void, ArrayList<Recipe>> {
Context mContext;
public RecipeOperation(Context context){
mContext = context;
}
@Override
protected void onPreExecute(){
// set gui visibilities
}
@Override
protected ArrayList<Recipe> doInBackground(Void... param) {
// long computation
}
@Override
protected void onPostExecute(ArrayList<Recipe> result) {
//start activity
Intent i = RecipeListActivity.newIntent(mContext, mEntity.getName(), result);
mContext.startActivity(i);
}
}
}代碼
的RecipeOperation
任務,像這樣執行
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new RecipeOperation(getActivity()).execute();
}
});
下面是我開始
活動public class RecipeListActivity extends SingleFragmentActivity {
private static final String EXTRA_NAME = "name";
private static final String RECIPES_TAG = "Recipes";
@Override
protected Fragment createFragment(){
String Name = getIntent().getExtras().getString(EXTRA_NAME);
ArrayList<Recipe> recipes = getIntent().getExtras().getParcelableArrayList(RECIPES_TAG);
return RecipeListFragment.newInstance(Name,recipes);
}
public static Intent newIntent(Context packageContent, String Name, ArrayList<Recipe> recipes){
Intent intent = new Intent(packageContent,RecipeListActivity.class);
intent.putExtra(EXTRA_NAME, Name);
intent.putParcelableArrayListExtra(RECIPES_TAG,recipes);
return intent;
}
}
這裏是RecipeListActivity
public abstract class SingleFragmentActivity extends AppCompatActivity {
protected abstract Fragment createFragment();
@LayoutRes
protected int getLayoutResId(){
return R.layout.activity_masterdetail;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutResId());
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.fragment_container);
if (fragment == null) {
fragment = createFragment();
fm.beginTransaction()
.add(R.id.fragment_container, fragment)
.commit();
}
}
}
一旦開始了新的活動發生了什麼事的意圖的演員,我怎麼能得到額外堅持超?
'onCreate()'在超類'SingleFragmentActivity'中 – martin1m
你在那裏設置了一個斷點嗎? –
我在問題中添加了'SingleFragmentActivity'。我在該類中設置了一個斷點,其中的額外元素也是空的。 – martin1m