2

一旦用户从我的 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();

    } 
});
4

2 回答 2

2

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

于 2013-08-08T16:45:43.970 回答
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

    }
于 2013-08-08T16:45:59.063 回答