【问题标题】:Android finishing activity not workingAndroid完成活动不起作用
【发布时间】:2013-08-08 16:40:24
【问题描述】:

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

    } 
});

【问题讨论】:

    标签: android android-listview


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果我对您的理解正确,您在错误的Activity 上调用finish()。如果您希望列表 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
      
          }
      

      并从您的 EditText Activity 中删除 finish()

      我看到的另一个问题是,您似乎正在使用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
      
          }
      

      【讨论】:

      • 我对你的流程感到困惑。 ListmenuActivity 是什么,你想关闭哪个?
      • ListmenuActivity 是保存 EditText 的活动,一旦用户选择了他们的产品,我想关闭 CPUList。
      • 这已经解决了我遇到的问题,但是现在一旦我从 ListView 中单击一个产品,由于某种奇怪的原因,它不会出现在 EditText 中,无论如何,谢谢。
      • 如果它解决了您的问题,请接受。第二个问题可能是因为在onClick()finish() 之后的所有代码都应该在onActivityResult() 中。 See the Docs 了解如何正确使用它
      • 更新了我的代码并添加了“startActivityForResult(CPUList, 1);”在代码之前(见上文)。似乎没有任何工作,您能帮我吗,我查看了“查看文档”,在这里找不到问题,谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多