将带有getHttpResponse的Activity转到Fragment

时间:2018-09-29 07:27:48

标签: java android fragment httpresponse

  

我发现很难使用Fragment,因为我仍然没有足够的知识,所以我尝试首先使用Activity类创建项目,但是由于使用左键,我仍然必须将其转换为Fragment导航我需要某人的指导,因为我似乎无法在互联网上找到任何东西

     

一切都很好,但是当我更改代码的这一部分

 new ReportsTab.GetHttpResponse(ReportsTab.this).execute();
  

它将显示错误“无法应用Gethttpresponse”

     

这是我的活动课程

 public class Reports extends AppCompatActivity {

    ListView ReportsListView;
    ProgressBar progressBar;
    Button status;
    String HttpUrl = "http://................../reports_app2.php";
    List<String> IdList = new ArrayList<>();
    AlertDialog alertDialog;

    private DrawerLayout mDrawerLayout;
    private ActionBarDrawerToggle mToggle;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_reports);

        ReportsListView = (ListView)findViewById(R.id.listview1);


        progressBar = (ProgressBar)findViewById(R.id.progressBar);

        new GetHttpResponse(Reports.this).execute();

        //Adding ListView Item click Listener.
        ReportsListView.setOnItemClickListener(new AdapterView.OnItemClickListener()
        {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                // TODO Auto-generated method stub

                Intent intent = new Intent(Reports.this,MainActivity.class);

                // Sending ListView clicked value using intent.
                intent.putExtra("ListViewValue", IdList.get(position).toString());

                startActivity(intent);

                //Finishing current activity after open next activity.
                finish();

            }
        });

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer);
        mToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open, R.string.close);
        mDrawerLayout.addDrawerListener(mToggle);
        NavigationView nvDrawer = (NavigationView) findViewById(R.id.nv);
        mToggle.syncState();
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        setupDrawerContent(nvDrawer);
    }

    private class GetHttpResponse extends AsyncTask<Void, Void, Void>
    {
        public Context context;

        String JSonResult;

        List<ReportsJava> ReportsList;

        public GetHttpResponse(Context context)
        {
            this.context = context;
        }

        @Override
        protected void onPreExecute()
        {
            super.onPreExecute();
        }

        @Override
        protected Void doInBackground(Void... arg0)
        {
            // Passing HTTP URL to HttpServicesClass Class.
            HttpServicesClass httpServicesClass = new HttpServicesClass(HttpUrl);
            try
            {
                httpServicesClass.ExecutePostRequest();

                if(httpServicesClass.getResponseCode() == 200)
                {
                    JSonResult = httpServicesClass.getResponse();

                    if(JSonResult != null)
                    {
                        JSONArray jsonArray = null;

                        try {
                            jsonArray = new JSONArray(JSonResult);

                            JSONObject jsonObject;

                            ReportsJava reports;

                            ReportsList = new ArrayList<ReportsJava>();

                            for(int i=0; i<jsonArray.length(); i++)
                            {
                                reports = new ReportsJava();

                                jsonObject = jsonArray.getJSONObject(i);

                                // Adding Student Id TO IdList Array.
                                IdList.add(jsonObject.getString("id").toString());

                                //Adding Student Name.
                                if("0".equals(jsonObject.getString("status").toString()))
                                {
                                    reports.LightpostStatus = "BLACKOUT";
                                }
                                else if("1".equals(jsonObject.getString("status").toString()))
                                {
                                    reports.LightpostStatus = "FIXED";
                                }
                                else if("2".equals(jsonObject.getString("status").toString()))
                                {
                                    reports.LightpostStatus = "DEFECTIVE";
                                }

                                reports.LightpostName = jsonObject.getString("lightpost_code").toString();
                                reports.LightpostAddress = jsonObject.getString("lightpost_location").toString();
                                reports.LightpostTime = jsonObject.getString("lightpost_time").toString();


                                ReportsList.add(reports);



                            }
                        }
                        catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                }
                else
                {
                    Toast.makeText(context, httpServicesClass.getErrorMessage(), Toast.LENGTH_SHORT).show();
                }
            }
            catch (Exception e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result)

        {
            progressBar.setVisibility(View.GONE);

            ReportsListView.setVisibility(View.VISIBLE);

            ReportsListAdapterClass adapter = new ReportsListAdapterClass(ReportsList, context);

            ReportsListView.setAdapter(adapter);

        }
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.menuLogout:
                SharedPrefManager.getInstance(this).logout();
                finish();
                startActivity(new Intent(this, MainActivity.class));
                break;
            case R.id.menuSettings:
                Toast.makeText(this, "You clicked settings", Toast.LENGTH_LONG).show();
                break;
        }
        return true;

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu, menu);
        return true;
    }



    public void selectItemDrawer(MenuItem menuItem){
        Fragment myFragment = null;
        Class fragmentClass;

        switch (menuItem.getItemId()){

            case R.id.viewlights:
                fragmentClass= ViewLightpost.class;
                break;
            case R.id.viewreports:
                fragmentClass= ReportsTab.class;
                break;
            case R.id.viewaccount:
                fragmentClass= EditAccount.class;
                break;
            case R.id.viewabout:
                fragmentClass= AboutTab.class;
                break;

            default:
                fragmentClass= ViewLightpost.class;
        }

        try{
            myFragment=(Fragment) fragmentClass.newInstance();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }

        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction().replace(R.id.flcontent,myFragment).commit();
        menuItem.setChecked(true);

        setTitle(menuItem.getTitle());
        mDrawerLayout.closeDrawers();
    }

    private void setupDrawerContent(NavigationView navigationView){
        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                selectItemDrawer(item);
                return false;
            }
        });
    }
}

1 个答案:

答案 0 :(得分:0)

new ReportsTab.GetHttpResponse(ReportsTab.this.getActivity()).execute();

从片段实例获取活动。