Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在多个片段中将数据传递给对象_Android_Android Intent_Android Fragments_Sharedpreferences_Android Listfragment - Fatal编程技术网

Android 在多个片段中将数据传递给对象

Android 在多个片段中将数据传递给对象,android,android-intent,android-fragments,sharedpreferences,android-listfragment,Android,Android Intent,Android Fragments,Sharedpreferences,Android Listfragment,我们有一段代码,可以在单击时创建一个带有详细视图的列表视图。有一个名为drink content的包装类,其中包含一个drink对象和一个静态代码段,该代码段调用调用web服务的asyncTask。我们需要根据另一个活动的数据构建URL,但我不了解对象的创建方式。我们似乎无法将列表和细节片段中的常规DrinkContent引用替换为对DrinkContent实例化实例的单个引用。我们希望使用饮料内容的实例化实例,这样我们就可以编写一个构造函数,该构造函数将接收在另一个活动中生成的URL参数。我们

我们有一段代码,可以在单击时创建一个带有详细视图的列表视图。有一个名为drink content的包装类,其中包含一个drink对象和一个静态代码段,该代码段调用调用web服务的asyncTask。我们需要根据另一个活动的数据构建URL,但我不了解对象的创建方式。我们似乎无法将列表和细节片段中的常规DrinkContent引用替换为对DrinkContent实例化实例的单个引用。我们希望使用饮料内容的实例化实例,这样我们就可以编写一个构造函数,该构造函数将接收在另一个活动中生成的URL参数。我们可以将URL数据传递给片段,但在编写构造函数时,创建了多个饮料内容实例,我们的web服务请求无法工作。我们将参数存储在其他活动共享首选项中,并将其传递给新活动

禁饮活动代码:

package com.cs4720.drinkengine\u android;
导入android.content.Intent;
导入android.os.Bundle;
导入android.support.v4.app.FragmentActivity;
导入android.support.v4.app.NavUtils;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.Button;
公共类DrinkListActivity扩展了碎片活动
实现DrinkListFragment.Callbacks{
私有布尔值窗格;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u different\u list);
if(findViewById(R.id.drink\u detail\u container)!=null){
mTwoPane=true;
((DrinkListFragment)getSupportFragmentManager()
.findFragmentById(R.id.Dream_列表))
.setActivateOnItemClick(真);
}
按钮按钮=(按钮)findViewById(R.id.button1);
setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
意向i=新意向(DrinkListActivity.this,LeadboardActivity.class);
星触觉(i);
}
});
}
已选择公共id(字符串id){
如果(mTwoPane){
Bundle参数=新Bundle();
arguments.putString(DrinkDetailFragment.ARG_ITEM_ID,ID);
DrinkDetailFragment=新的DrinkDetailFragment();
fragment.setArguments(参数);
getSupportFragmentManager().beginTransaction()
.更换(R.id.饮料\详细信息\容器,碎片)
.commit();
}否则{
Intent detailIntent=新的Intent(this,DrinkDetailActivity.class);
detailIntent.putExtra(DrinkDetailFragment.ARG_ITEM_ID,ID);
星触觉(意向);
}
}
}
DrinkListFragment的代码

package com.cs4720.drinkengine\u android;
导入com.cs4720.drinkengine_android.dummy.DrinkContent;
导入com.cs4720.drinkengine_android.dummy.DrinkContent.getDrinkTask;
导入android.R;
导入android.app.Activity;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.v4.app.ListFragment;
导入android.view.view;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
公共类DrinkListFragment扩展了ListFragment{
私有静态最终字符串状态\u ACTIVATED\u POSITION=“ACTIVATED\u POSITION”;
私有回调mCallbacks=sDummyCallbacks;
private int mActivatedPosition=ListView.INVALID_POSITION;
公共接口回调{
已选择公共id(字符串id);
}
私有静态回调sDummyCallbacks=新回调(){
已选择公共id(字符串id){
}
};
公共饮用水碎片(){
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setListAdapter(新的ArrayAdapter(getActivity()),
R.layout.simple\u list\u item\u activated\u 1,
R.id.text1,
饮品内容物项);
}
@凌驾
已创建视图上的公共void(视图,捆绑保存状态){
super.onViewCreated(视图,savedInstanceState);
if(savedInstanceState!=null&&savedInstanceState
.containsKey(状态激活位置)){
setActivatedPosition(savedInstanceState.getInt(STATE_ACTIVATED_POSITION));
}
}
@凌驾
公共事务主任(活动){
超级转速计(活动);
if(!(回调的活动实例)){
抛出新的IllegalStateException(“活动必须实现片段的回调”);
}
mCallbacks=(回调)活动;
}
@凌驾
公共无效连接(){
super.onDetach();
mCallbacks=sDummyCallbacks;
}
@凌驾
public void onListItemClick(ListView ListView、视图视图、int位置、长id){
super.onListItemClick(列表视图、视图、位置、id);
mCallbacks.onItemSelected(DrinkContent.ITEMS.get(position.name));
}
@凌驾
SaveInstanceState上的公共无效(束超出状态){
super.onSaveInstanceState(超出状态);
if(mActivatedPosition!=列表视图。位置无效){
outState.putInt(状态激活位置,mActivatedPosition);
}
}
public void setActivateOnItemClick(布尔activateOnItemClick){
getListView().setChoiceMode(activateOnItemClick
?ListView.CHOICE_MODE_SINGLE
:ListView.CHOICE\u MODE\u NONE);
}
公共无效设置激活位置(内部位置){
if(position==ListView.INVALID_position){
getListView().setItemChecked(mActivatedPosition,false);
}否则{
getListView().setItemChecked(位置,true);
}
mActivatedPosition=位置;
}
}
代码