Android整理活动无效

时间:2013-08-08 16:40:25

标签: android android-listview

一旦用户从我的ListView中选择产品,它就会将ListView中的选定文本放入EditText中。我遇到的问题是当用户从列表中选择产品然后再按下时,它再次出现列表而不是返回到EditText活动。

我尝试过使用“finish();”活动开始后,似乎没有任何工作。

包含启动List活动的EditText的活动:

        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);

        }
    });

列出视图类

@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();

    } 
});

2 个答案:

答案 0 :(得分:1)

您需要以不会添加到后台堆栈的方式启动您的活动。 这是你如何做到的:https://stackoverflow.com/a/12358563/375929

答案 1 :(得分:0)

如果我理解正确,您就是在错误的finish()上致电Activity。如果您希望列表Activity完成,那么您需要拨打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

    }

并从finish()

中删除EditText Activity

我看到的另一个问题是看起来你正在使用startActivityForResult()开始第二个代码,但是你没有在第二个代码中发回结果。相反,你似乎正在开始另一个Activity。似乎第二位应该更像

 @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

    }