Android finishing activity not working

时光怂恿深爱的人放手 提交于 2019-12-11 01:53:59

问题


Once the user chooses a product from my ListView, it then puts the selected text from that ListView into an EditText. The problem I am having is when the user selects a product from the list, and then presses back, it comes up with the list again instead of returning to the EditText activity.

I have tried using "finish();" after the activity starts but nothing seems to be working.

Activity that holds the EditText that launches the List activity:

        EditText CPU = (EditText) findViewById(R.id.autoCompleteTextView4);
    CPU.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent CPUList = new Intent(getApplicationContext(),
                    CPUList.class);
            startActivityForResult(CPUList, 1);
            Intent i = getIntent();
            String product = i.getStringExtra("key");
            EditText CPU = ((EditText) findViewById(R.id.autoCompleteTextView4));
            CPU.setText(product);

        }
    });

List view class

@Override
public void onCreate(Bundle OnsaveInstanceState) {
    super.onCreate(OnsaveInstanceState);
    setContentView(R.layout.activity_cpulist);

    ListView listViewCPU = (ListView) findViewById(R.id.listViewCPU);
    listViewCPU.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

    String CPUList[] = {

 "CPU's go here", "CPU's go here", "CPU's go here", "CPU's go here" };

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, CPUList);

    listViewCPU.setAdapter(adapter);

    listViewCPU.setOnItemClickListener(new OnItemClickListener() {

 @Override
 public void onItemClick(AdapterView<?> listview, View myView,
        int pos, long mylng) {
    String CPU = (String) listview.getAdapter().getItem(pos);

    Intent i = new Intent();
    i.putExtra("key", CPU);
    setResult(1, i);

    finish();

    } 
});

回答1:


If I understand you correctly, you are calling finish() on the wrong Activity. If you want the list Activity to finish then that's where you need to call finish()

  @Override
    public void onItemClick(AdapterView<?> listview, View myView,
            int pos, long mylng) {
        String CPU = (String) listview.getAdapter().getItem(pos);

        Intent i = new Intent(getApplicationContext(),
                ListmenuActivity.class);

        i.putExtra("key", CPU);
        startActivity(getIntent());
        startActivity(i);

        finish();  // finish here

    }

and remove finish() from your EditText Activity

Another issue I see is it looks like you are starting that second bit of code with the first using startActivityForResult() but you aren't sending back a result in your second code. Instead, you seem to be starting another Activity. It seems that second bit should be more like

 @Override
    public void onItemClick(AdapterView<?> listview, View myView,
            int pos, long mylng) {
        String CPU = (String) listview.getAdapter().getItem(pos);

        Intent i = new Intent();
        i.putExtra("key", CPU);
        setResult(1, i);

        finish();  // finish here

    }



回答2:


You need to launch your activity in a way that it doesn't get added to back stack. Here's how you do that: https://stackoverflow.com/a/12358563/375929



来源:https://stackoverflow.com/questions/18131466/android-finishing-activity-not-working

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!