在片段Android中实现活动 [英] Implement activity in fragment android

查看:59
本文介绍了在片段Android中实现活动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在项目中使用NavigationDrawer,我具有MainNavigationFragmentActivity来管理2个片段:HomeFragment和SettingsFragment.

I'm using NavigationDrawer in my project, I have MainNavigationFragmentActivity to manage 2 fragments : HomeFragment and SettingsFragment.

现在,我想使用HomeFragment来实现活动(ManufacturerActivity)

Now, I want to use HomeFragment to implement a activity (ManufacturerActivity)

我的HomeFragment类:

my HomeFragment class:

public class HomeFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.test1, container, false);

    GridView gridView = (GridView) view.findViewById(R.id.gridview);
    gridView.setAdapter(new MyAdapter(getActivity()));

    return view;
    } 
}

我的ManufacturerActivity类:(此类将从URL中获取json)

my ManufacturerActivity class: (this class will get json from URL)

public class ManufacturerActivity extends ListActivity {

// Connection detector
ConnectionDetector cd;

// Alert dialog manager
AlertDialogManager alert = new AlertDialogManager();

// Progress Dialog
private ProgressDialog pDialog;

// Creating JSON Parser object
JSONParser jsonParser = new JSONParser();

ArrayList<HashMap<String, String>> albumsList;

// albums JSONArray
JSONArray albums = null;

// albums JSON url
private static final String URL_ALBUMS = "my URL";

// ALL JSON node names
private static final String TAG_ID = "id";
private static final String TAG_NAME = "name";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.manufacturer_activity);

    cd = new ConnectionDetector(getApplicationContext());

    // Check for internet connection
    if (!cd.isConnectingToInternet()) {
        // Internet Connection is not present
        alert.showAlertDialog(ManufacturerActivity.this, "Internet Connection Error",
                "Please connect to working Internet connection", false);
        // stop executing code by return
        return;
    }

    // Hashmap for ListView
    albumsList = new ArrayList<HashMap<String, String>>();

    // Loading Albums JSON in Background Thread
    new LoadCars().execute();

    // get listview
    ListView lv = getListView();

    /**
     * Listview item click listener
     * TrackListActivity will be lauched by passing album id
     * */
    lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View view, int arg2,
                                long arg3) {
            // on selecting a single album
            // TrackListActivity will be launched to show tracks inside the album
            Intent i = new Intent(getApplicationContext(), CategoryCarActivity.class);

            // send album id to tracklist activity to get list of songs under that album
            String album_id = ((TextView) view.findViewById(R.id.album_id)).getText().toString();
            i.putExtra("album_id", album_id);

            startActivity(i);
        }
    });
}

/**
 * Background Async Task to Load all Albums by making http request
 * */
class LoadCars extends AsyncTask<String, String, String> {

    /**
     * Before starting background thread Show Progress Dialog
     * */
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(ManufacturerActivity.this);
        pDialog.setMessage("Listing Albums ...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        pDialog.show();
    }

    /**
     * getting Albums JSON
     * */
    protected String doInBackground(String... args) {
        // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();

        // getting JSON string from URL
        String json = jsonParser.makeHttpRequest(URL_ALBUMS, "GET",
                params);

        // Check your log cat for JSON reponse
        Log.d("Albums JSON: ", "> " + json);

        try {
            albums = new JSONArray(json);
            if (albums != null) {
                // looping through All albums
                for (int i = 0; i < albums.length(); i++) {
                    JSONObject c = albums.getJSONObject(i);

                    // Storing each json item values in variable
                    String id = c.getString(TAG_ID);
                    String name = c.getString(TAG_NAME);                        

                    // creating new HashMap
                    HashMap<String, String> map = new HashMap<String, String>();

                    // adding each child node to HashMap key => value
                    map.put(TAG_ID, id);
                    map.put(TAG_NAME, name);
                    // map.put(TAG_SONGS_COUNT, songs_count);

                    // adding HashList to ArrayList
                    albumsList.add(map);
                }
            }else{
                Log.d("Albums: ", "null");
            }

        } catch (JSONException e) {
            e.printStackTrace();
        }

        return null;
    }

    /**
     * After completing background task Dismiss the progress dialog
     * **/
    protected void onPostExecute(String file_url) {
        // dismiss the dialog after getting all albums
        pDialog.dismiss();
        // updating UI from Background Thread
        runOnUiThread(new Runnable() {
            public void run() {
                /**
                 * Updating parsed JSON data into ListView
                 * */
                ListAdapter adapter = new SimpleAdapter(
                        ManufacturerActivity.this, albumsList,
                        R.layout.list_item_manufacturers, new String[] { TAG_ID,
                        TAG_NAME }, new int[] {
                        R.id.album_id, R.id.album_name });

                // updating listview
                setListAdapter(adapter);
            }
        });

    }

}

}

如何在HomeFragment中实现ManufacturerActivity并从JSON获取ListView数据? 非常感谢!!

How I can implement ManufacturerActivity in HomeFragment and get ListView data from JSON? Thank so much !!

推荐答案

您不能在Fragment中实现Activity.您可以按照以下步骤获取片段中的数据.

You can't implement Activity in Fragment. You can do below steps to get data in fragment.

  1. 通过点击URL在Activity类中获取json数据.
  2. 使用SharedPrefs或Database或任何其他方法保存该json数据.
  3. 现在,在Fragment中获取保存的json数据并显示在列表中.

这篇关于在片段Android中实现活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆