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

私が目にするもう1つの問題は、最初の使用で2番目のコードを開始しているように見えますが、startActivityForResult()2番目のコードで結果を送り返していないことです。代わりに、別のActivity. 2番目のビットはもっと似ているはずです

 @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 に答える