
我有两个活动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 – 当我按下后退按钮时,我的活动重新启动所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)