Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.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
onBackPressed()不幸的是,android手机中的应用程序已停止_Android_Soap - Fatal编程技术网

onBackPressed()不幸的是,android手机中的应用程序已停止

onBackPressed()不幸的是,android手机中的应用程序已停止,android,soap,Android,Soap,我正在开发一个电子商务应用程序,其中大多数java类文件使用异步任务从服务器获取数据,我在所有java类中使用片段。我的问题是,当我单击Backpressed时,它在异步任务行中显示错误,因为从服务器获取数据再次需要一些时间间隔 MainActivity.java package com.prashant; import android.app.SearchManager; import android.content.Context; import android.content.Dialog

我正在开发一个电子商务应用程序,其中大多数java类文件使用异步任务从服务器获取数据,我在所有java类中使用片段。我的问题是,当我单击Backpressed时,它在异步任务行中显示错误,因为从服务器获取数据再次需要一些时间间隔

MainActivity.java

package com.prashant;
import android.app.SearchManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.support.v4.app.Fragment;

import android.support.v4.app.FragmentManager;
import android.support.v4.view.MenuItemCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.SearchView;

import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.os.Handler;
import android.widget.GridView;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;


public class MainActivity extends AppCompatActivity implements android.support.v7.app.ActionBar.OnNavigationListener {
    TextView txtView;
    private static MainActivity sMainActivity;
    ProgressBar prgLoading;
    RelativeLayout drawerPane;
    DrawerLayout drawerLayout;

    GridView lvNav;

    TextView Customer_name;
    TextView Customer_email;
    TextView Customer_mob;

    List<NavItem> listNavItems;
    List<Fragment> listFragment;
    private Boolean exit = false;

    ActionBarDrawerToggle actionBarDrawerToggle;

    public int hot_number = Constants.ProductCart_Id.size();
    private TextView ui_hot = null;

    private boolean mNaviFirstHit = true;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sMainActivity = this;
        // Styling Action Bar
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.rgb(7,112,200)));


        drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        //Getting Session Information Of Customer
        String MyPREFERENCES = "CustomerData";
        SharedPreferences sharedpreferences =getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

        Constants.Customer_FirstName= sharedpreferences.getString("Customer_FirstName","");
        Constants.Customer_LastName=sharedpreferences.getString("Customer_LastName", "");
        Constants.Customer_MobileNo=sharedpreferences.getString("Customer_MobileNo", "");

        Constants.Customer_Id=sharedpreferences.getInt("Customer_Id", 0);
        Constants.Customer_Email=sharedpreferences.getString("Customer_Email", "");
        Customer_email.setText(Constants.Customer_Email);

        //Asigning FRagment names of sidebar
        listNavItems = new ArrayList<NavItem>();
        listNavItems.add(new NavItem("Home", null, R.drawable.pras));
        for(int i=0;i<Constants.Category_name.size();i++){
            listNavItems.add(new NavItem(Constants.Category_name.get(i),null,R.drawable.teju));
        }



        NavListAdapter navListAdapter = new NavListAdapter(getApplicationContext(), R.layout.item_nav_list, listNavItems);

        lvNav.setAdapter(navListAdapter);

        listFragment = new ArrayList<Fragment>();
        listFragment.add(new MyHome());
        for(int i=0;i<Constants.Category_name.size();i++){
            listFragment.add(new ProductsListFragment());
        }
        listFragment.add(new MyHome());
        listFragment.add(new ActivityCart());
        listFragment.add(new LoginFragment());
        listFragment.add(new MyAbout());



        //Asigning FRagment names of sidebar

        //Saving fragment data as constants for my home categories
        Constants.listNavItems=listNavItems;
        Constants.listFragment=listFragment;
        //Saving fragment data as constants for my home categories

        //Load first fragment as default:
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction().replace(R.id.main_content, listFragment.get(0)).commit();

        setTitle(listNavItems.get(0).getTitle());
        lvNav.setItemChecked(0, true);
        drawerLayout.closeDrawer(drawerPane);



        // create listener for drawer layout
        actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.drawer_open , R.string.drawer_close)
        {
            @Override
            public void onDrawerOpened(View drawerView)
            {
                invalidateOptionsMenu();
                super.onDrawerOpened(drawerView);
            }
            @Override
            public void onDrawerClosed(View drawerView)
            {
                invalidateOptionsMenu();
                super.onDrawerClosed(drawerView);
            }
        };

        drawerLayout.setDrawerListener(actionBarDrawerToggle);

    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        final Menu mMenu = menu;
        MenuInflater mif = getMenuInflater();
        mif.inflate(R.menu.actionbar_icon_menu, menu);

        // Cart Icon in Action Bar
        final View menu_hotlist = menu.findItem(R.id.cart_icon).getActionView();
        ui_hot = (TextView) menu_hotlist.findViewById(R.id.hotlist_Cart_hot);
        updateHotCount(hot_number);

        menu_hotlist.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Constants.lastDetails = false;
                FragmentManager fragmentManager = getSupportFragmentManager();
                ActivityCart cart = new ActivityCart();
                fragmentManager.beginTransaction().replace(R.id.main_content, cart).commit();
                setTitle("Cart");
                drawerLayout.closeDrawer(drawerPane);
            }
        });




        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item){
        if(actionBarDrawerToggle.onOptionsItemSelected(item))
            return true;
        // Take appropriate action for each action item click
        switch (item.getItemId()) {

            case R.id.cart_icon:
                // search action
                FragmentManager fragmentManager = getSupportFragmentManager();
                ActivityCart cart = new ActivityCart();
                fragmentManager.beginTransaction().replace(R.id.main_content, cart).commit();
                setTitle("Cart");
                drawerLayout.closeDrawer(drawerPane);
                return true;
              case R.id.action_search:

                return true;
        }
        return super.onOptionsItemSelected(item);
    }


    @Override
    protected void onPostCreate(Bundle savedInstanceState) {

        super.onPostCreate(savedInstanceState);
        actionBarDrawerToggle.syncState();
    }

  @Override
   public void onBackPressed() {
       if (getFragmentManager().getBackStackEntryCount() >0) {
           getFragmentManager().popBackStack();
       } else {
           super.onBackPressed();
       }
   }




    @Override
    public boolean onNavigationItemSelected(int itemPosition, long itemId) {
        if (mNaviFirstHit) {
            mNaviFirstHit = false;
            return true;
        }
        else {
            if(itemPosition == 0)
                Constants.isCallParent = true;
            else
                Constants.isCallParent = false;

            Constants.SubCatposition = itemPosition;
            ProductsListFragment productsListFragment = new ProductsListFragment();
            FragmentManager fragmentManager = getSupportFragmentManager();
            fragmentManager.beginTransaction().replace(R.id.main_content, productsListFragment).commit();
            //lvNav.setItemChecked(position, true);
            drawerLayout.closeDrawer(drawerPane);
            //Toast.makeText(this, "Clicked at: " + itemPosition, Toast.LENGTH_LONG).show();
            //mNaviFirstHit = true;
            return true;
        }
    }

    public void setLoginDetails(){
        Customer_email.setText(Constants.Customer_Email);
        Customer_name.setText("Welcome, " + Constants.Customer_FirstName);
      Customer_name.setText(Constants.Customer_LastName);
    }
}

尝试在
onBackPressed()期间取消异步任务执行

宣布:

Public getDataTask asyncFetchData;

 asyncFetchData = new getDataTask();
 asyncFetchData.execute();
现在在您的片段中:

@Override
    public void onViewCreated(View view, Bundle savedInstanceState) {

        super.onViewCreated(view, savedInstanceState);
        getView().setFocusableInTouchMode(true);
        getView().requestFocus();
        getView().setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (event.getAction() == KeyEvent.ACTION_DOWN) {
                    if (keyCode == KeyEvent.KEYCODE_BACK) {
                        if (asyncFetchData!= null)
                            asyncFetchData.cancel(true);
                        Toast.makeText(getActivity(), "Back pressed...", Toast.LENGTH_SHORT).show();
                        return true;
                    }
                }
                return false;
            }
        });
    }
同样在
doInBackground
中,通知
AsyncTask
取消执行

 @Override
protected Void doInBackground(Void... arg0) {
    // TODO Auto-generated method stub
    // parse json data from server in background
    parseJSONData();
    if (isCancelled()) break;
    return null;
}

请分享您的日志您得到了什么错误?日志请分享我的日志请检查request.addProperty(“parentId”,Constants.Category_ID.get(Constants.position-1));错误似乎与此行有关,因为它尝试获取-1位置,然后获取ArrayIndexOutOfBoundExceptionbreak outside开关或循环,此消息在break时显示;而且onKeyDown从未使用过。
@Override
    public void onViewCreated(View view, Bundle savedInstanceState) {

        super.onViewCreated(view, savedInstanceState);
        getView().setFocusableInTouchMode(true);
        getView().requestFocus();
        getView().setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (event.getAction() == KeyEvent.ACTION_DOWN) {
                    if (keyCode == KeyEvent.KEYCODE_BACK) {
                        if (asyncFetchData!= null)
                            asyncFetchData.cancel(true);
                        Toast.makeText(getActivity(), "Back pressed...", Toast.LENGTH_SHORT).show();
                        return true;
                    }
                }
                return false;
            }
        });
    }
 @Override
protected Void doInBackground(Void... arg0) {
    // TODO Auto-generated method stub
    // parse json data from server in background
    parseJSONData();
    if (isCancelled()) break;
    return null;
}