Android 根据活动结果更新片段中的Listview。到处都找不到结果

Android 根据活动结果更新片段中的Listview。到处都找不到结果,android,listview,android-fragments,dialog,android-actionbar,Android,Listview,Android Fragments,Dialog,Android Actionbar,我有一个活动和一个片段 在我的活动中,我在我的操作栏中有一个按钮,单击按钮时会弹出一个对话框,其中我有一个列表视图。 若我从该列表中选择了任何项目,那个么该数据将进入片段,并且基于该活动中的数据,应该显示我的片段列表视图 e、 g.如果我选择Technology,Technology id=1应该传入我的查询参数,并基于此显示我的片段listview。 每次我从列表中选择不同的项目时,我的片段列表视图都应该更新 但我的问题是,我没有在片段中获得任何数据,我的列表也没有得到更新 Mainactiv

我有一个活动和一个片段 在我的活动中,我在我的操作栏中有一个按钮,单击按钮时会弹出一个对话框,其中我有一个列表视图。 若我从该列表中选择了任何项目,那个么该数据将进入片段,并且基于该活动中的数据,应该显示我的片段列表视图

e、 g.如果我选择Technology,Technology id=1应该传入我的查询参数,并基于此显示我的片段listview。 每次我从列表中选择不同的项目时,我的片段列表视图都应该更新

但我的问题是,我没有在片段中获得任何数据,我的列表也没有得到更新

Mainactivity.java

 @Override
        public boolean onPrepareOptionsMenu(Menu menu) {
            MenuItem actionViewItem = menu.findItem(R.id.miActionButton);
            // Retrieve the action-view from menu
            View v = MenuItemCompat.getActionView(actionViewItem);
            // Find the button within action-view
            Button b = (Button) v.findViewById(R.id.btnCustomAction);
            // Handle button click here

            b.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    showDialog(CUSTOM_DIALOG_ID);
                }
            });
            return super.onPrepareOptionsMenu(menu);
        }

        @Override
        public Dialog onCreateDialog(int id) {

            Dialog dialog = null;

            switch (id) {
            case CUSTOM_DIALOG_ID:
                dialog = new Dialog(this);
                dialog.setContentView(R.layout.dialoglayout);
                dialog.setTitle("Select Category");

                dialog.setCancelable(true);
                dialog.setCanceledOnTouchOutside(true);

                dialog.setOnCancelListener(new OnCancelListener() {

                    @Override
                    public void onCancel(DialogInterface dialog) {

                    }
                });

                dialog.setOnDismissListener(new OnDismissListener() {

                    @Override
                    public void onDismiss(DialogInterface dialog) {
                        // TODO Auto-generated method stub

                    }
                });

                // Prepare ListView in dialog
                dialog_ListView = (ListView) dialog.findViewById(R.id.dialoglist);
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                        android.R.layout.simple_list_item_1, listContent);
                dialog_ListView.setAdapter(adapter);
                dialog_ListView.setOnItemClickListener(new OnItemClickListener() {

                    @Override
                    public void onItemClick(AdapterView<?> parent, View view,
                            int position, long id) {
                        // TODO Auto-generated method stub

                        // i = (int) parent.getItemIdAtPosition(position);

                        category_name = (String) parent.getItemAtPosition(position);

                        Log.d("category name", category_name);


                        if(category_name.equals("a"))
                        {
                            cat_id=1;

                        }
                        if(category_name.equals("b"))
                        {
                            cat_id=2;
                        }
                        if(category_name.equals("c"))
                        {
                            cat_id=3;
                        }
                        if(category_name.equals("d"))
                        {
                            cat_id=4;
                        }
                        if(category_name.equals("e"))
                        {
                            cat_id=5;
                        }
                        if(category_name.equals("f"))
                        {
                            cat_id=6;
                        }

                         Log.d("id",""+cat_id);

                        dismissDialog(CUSTOM_DIALOG_ID);
                    }

                });

                break;
            }

            return dialog;
        }


    public int getMyData() {
            return cat_id;
        }
@覆盖
公共布尔值OnPrepareOptions菜单(菜单){
MenuItem actionViewItem=menu.findItem(R.id.miActionButton);
//从菜单中检索操作视图
视图v=MenuItemCompat.getActionView(actionViewItem);
//在“操作”视图中查找按钮
按钮b=(按钮)v.findViewById(R.id.btnCustomAction);
//把手按钮点击这里
b、 setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
showDialog(自定义对话框ID);
}
});
返回super.onPrepareOptions菜单(菜单);
}
@凌驾
公共对话框onCreateDialog(int-id){
Dialog=null;
开关(id){
案例自定义对话框\u ID:
dialog=新建对话框(此对话框);
setContentView(R.layout.dialoglayout);
对话框.setTitle(“选择类别”);
对话框。可设置可取消(true);
对话框。setCanceledOnTouchOutside(true);
setOnCancelListener(新的OnCancelListener(){
@凌驾
public void onCancel(对话框接口对话框){
}
});
setOnDismissListener(新的OnDismissListener(){
@凌驾
公共void onDismiss(对话框接口对话框){
//TODO自动生成的方法存根
}
});
//在对话框中准备ListView
dialog_ListView=(ListView)dialog.findviewbyd(R.id.dialoglist);
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple_list_item_1,listContent);
对话框_ListView.setAdapter(适配器);
对话框\u ListView.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//TODO自动生成的方法存根
//i=(int)parent.getItemIdAtPosition(position);
category_name=(字符串)parent.getItemAtPosition(位置);
Log.d(“类别名称”,类别名称);
if(类别名称等于(“a”))
{
cat_id=1;
}
if(类别名称等于(“b”))
{
cat_id=2;
}
if(类别名称等于(“c”))
{
cat_id=3;
}
if(类别名称等于(“d”))
{
cat_id=4;
}
if(类别名称等于(“e”))
{
cat_id=5;
}
if(类别名称等于(“f”))
{
cat_id=6;
}
Log.d(“id”和“+类别id”);
dismissDialog(自定义对话框ID);
}
});
打破
}
返回对话框;
}
public int getMyData(){
返回cat_id;
}
Fragment.java:

 public String param;
        public String url;
        public int cat_id;


        Mainactivity activity = (Mainactivity) getActivity();
            int myDataFromActivity = activity.getMyData();

            cat_id = myDataFromActivity;
            Log.d("Category_id", "" + cat_id);


            Map<String, String> map1 = new HashMap<String, String>();
                param = "?cat_id=" + cat_id;

                //URL is fake , original url is working fine.
                url = "http://www.abbcd.com/xyz/webservices/data/getAllData.php"
                        + param;

                map1.put("url", url);

                new MultiPartRequester(mainActivity, map1,
                        NetUtils.RequestCode.GET_ALL_DATA,
                        this).execute();
公共字符串参数;
公共字符串url;
公共int cat_id;
Mainactivity=(Mainactivity)getActivity();
int myDataFromActivity=activity.getMyData();
cat_id=myDataFromActivity;
Log.d(“类别id”,“类别id+类别id”);
Map map1=新的HashMap();
param=“?cat_id=“+cat_id”;
//URL是假的,原始URL工作正常。
url=”http://www.abbcd.com/xyz/webservices/data/getAllData.php"
+param;
map1.put(“url”,url);
新的多部分请求程序(mainActivity、map1、,
NetUtils.RequestCode.GET_所有数据,
这是一个)execute();
更新部分:

@Override
    public void updateFragmentList(int catId) {
        // TODO Auto-generated method stub

        param = "?cat_id=" + catId;

        url = "http://www.abbcd.com/xyz/webservices/data/getAllData.php"+ param;

        Map<String, String> map1 = new HashMap<String, String>();
        map1.put("url", url);

        new MultiPartRequester(mainActivity, map1,
                NetUtils.GET_DATA, this)
                .execute();
    }
@覆盖
公共void更新标记列表(int catId){
//TODO自动生成的方法存根
param=“?cat_id=“+catId;
url=”http://www.abbcd.com/xyz/webservices/data/getAllData.php“+param;
Map map1=新的HashMap();
map1.put(“url”,url);
新的多部分请求程序(mainActivity、map1、,
NetUtils.GET_数据,此)
.execute();
}

在活动中使用静态全局变量

public static int cat_id = 0;

在下面的片段中访问
cat_id

 Map<String, String> map1 = new HashMap<String, String>();
                param = "?cat_id=" + activity.cat_id;

编辑:

另一种方法最终起作用了,从activity ans pass
cat_id
in方法调用片段方法。使用片段名称,而不是
ExampleFragment


在活动中使用静态全局变量

public static int cat_id = 0;

访问
c
ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);
fragment.mymethod(cat_id);
public interface FragmentListener {
        void updateFragmentList(int catId);
}
public class MyFragment extends Fragment implements MainActivity.FragmentListener
@Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        ((MainActivity) getActivity()).setFragmentListener(this);
}
public void setFragmentListener(FragmentListener listener)
    {

            this.fragmentListener = listener;

    }

public void sendDataToFragment(int catId) {
      this.fragmentListener.updateFragmentList(catId);
}
public void updateFragmentList(int catId){
       //Here update your listview with cat id
}