android– 当我按下后退按钮时,我的活动重新启动

android– 当我按下后退按钮时,我的活动重新启动,第1张

概述我有两个活动A和B.A是父母,B是儿童活动.我在活动A中使用VolleyStringrequest加载数据并在Recyclerview中显示项目.当我单击单个项目时,它会将我带到活动B.但是当我使用Home/Back按钮返回活动A时,活动将重新启动并再次发送Stringrequest以重新加载数据.但是当我使用设备返回按钮

我有两个活动A和B.A是父母,B是儿童活动.我在活动A中使用Volley Stringrequest加载数据并在RecyclervIEw中显示项目.当我单击单个项目时,它会将我带到活动B.但是当我使用Home / Back按钮返回活动A时,活动将重新启动并再次发送Stringrequest以重新加载数据.

但是当我使用设备返回按钮返回活动A时,它不会发送Stringrequest.

如何通过单击Home / Back按钮停止活动A从活动B返回时发送请求?

这是我的父母活动

    public class MyContactsActivity extends AppCompatActivity {    private RecyclerVIEw recyclerVIEw;    private ContactsAdapter adapter;    private NetworkChecker networkChecker;    private SessionManager sessionManager;    private AppConfig appConfig;    private relativeLayout loading;    AlertHelper alertHelper;    final ArrayList<Contact> contactArrayList = new ArrayList<>();    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_my_contacts);        Toolbar toolbar = (Toolbar) findVIEwByID(R.ID.toolbar);        setSupportActionbar(toolbar);        loading = (relativeLayout) findVIEwByID(R.ID.loadingPanel);        alertHelper = new AlertHelper(this);        networkChecker = new NetworkChecker(this);        sessionManager = new SessionManager(this);        appConfig = new AppConfig();        String phone = sessionManager.getLoggedInUserPhone();        String url = appConfig.getAPIUrlForSpecificContacts(phone);        recyclerVIEw = (RecyclerVIEw) findVIEwByID(R.ID.contactsVIEw);        adapter = new ContactsAdapter(getApplicationContext());        recyclerVIEw.setLayoutManager(new linearlayoutmanager(getApplicationContext()));        sendJsonRequest(url);        recyclerVIEw.setAdapter(adapter);        recyclerVIEw.addOnItemtouchListener(                new RecyclerItemClickListener(this, new RecyclerItemClickListener.OnItemClickListener() {                    @OverrIDe public voID onItemClick(VIEw vIEw, int position) {                        TextVIEw phone = (TextVIEw) vIEw.findVIEwByID(R.ID.contact_phone);                        TextVIEw name = (TextVIEw) vIEw.findVIEwByID(R.ID.contact_name);                        Intent i = new Intent(getApplicationContext(), ContactProfileActivity.class);                        i.putExtra("selected_user_phone", phone.getText());                        i.putExtra("selected_user_name", name.getText());                        startActivity(i);                    }                })        );        floatingActionbutton fab = (floatingActionbutton) findVIEwByID(R.ID.fab);        fab.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw vIEw) {                Snackbar.make(vIEw, "Replace with your own action", Snackbar.LENGTH_LONG)                        .setAction("Action", null).show();            }        });        getSupportActionbar().setdisplayHomeAsUpEnabled(true);    }    private voID sendJsonRequest(String url) {        if (networkChecker.networkAvailable()) {            loading.setVisibility(VIEw.VISIBLE);            RequestQueue requestQueue = VolleySingleton.getsInstance().getmRequestQueue();            StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {                @OverrIDe                public voID onResponse(String response) {                    loading.setVisibility(VIEw.GONE);                    try {                        JsONArray JsonArray = new JsONArray(response);                        if(JsonArray != null){                            for (int i = 0; i < JsonArray.length(); i++) {                                JsONObject currentContact = JsonArray.getJsONObject(i);                                String name = currentContact.getString("name");                                String phone = currentContact.getString("phone");                                String city = currentContact.getString("city");                                String address = currentContact.getString("address");                                Boolean verifIEd = currentContact.getBoolean("verifIEd");                                Contact contact = new Contact(name, phone, city, address, verifIEd);                                contactArrayList.add(contact);                            }                            adapter.setContactsList(contactArrayList);                        }                        else{                            alertHelper.displayDialog("No Contacts Found.");                        }                    }catch (Exception e){                        alertHelper.displayDialog(e.getMessage());                    }                }            }, new Response.ErrorListener() {                @OverrIDe                public voID one rrorResponse(VolleyError error) {                    loading.setVisibility(VIEw.GONE);                    if (error instanceof TimeoutError || error instanceof NoConnectionError) {                        alertHelper.displayDialog(getString(R.string.connection_Failed));                    } else {                        alertHelper.displayDialog(error.toString());                    }                }            });            requestQueue.add(stringRequest);        } else {            alertHelper.displayDialog(getString(R.string.network_not_available));        }    }}

这是儿童活动

public class ContactProfileActivity extends AppCompatActivity {    String received_name;    String received_phone;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_contact_profile);        Toolbar toolbar = (Toolbar) findVIEwByID(R.ID.toolbar);        setSupportActionbar(toolbar);        Intent i = getIntent();        Bundle b = i.getExtras();        if(b != null){            received_name = b.getString("selected_user_name");            received_phone = b.getString("selected_user_phone");        }        CollapsingToolbarLayout toolbarLayout = (CollapsingToolbarLayout) findVIEwByID(R.ID.toolbar_layout);        toolbarLayout.setTitle(received_name);        getSupportActionbar().setdisplayHomeAsUpEnabled(true);    }    @OverrIDe    public boolean onoptionsItemSelected(MenuItem menuItem) {        switch (menuItem.getItemID()) {            case androID.R.ID.home:                Toast.makeText(this, "Home Clicked", Toast.LENGTH_LONG).show();                finish();        }        return (super.onoptionsItemSelected(menuItem));    }}

解决方法:

不要调用finish(),你可以使用onBackpressed()

case androID.R.ID.home:   /* finish();*/   onBackpressed();   return true;

阅读https://developer.android.com/reference/android/app/Activity.html

总结

以上是内存溢出为你收集整理的android – 当我按下后退按钮时,我的活动重新启动全部内容,希望文章能够帮你解决android – 当我按下后退按钮时,我的活动重新启动所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1115035.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存