【问题标题】:new intent after click callback点击回调后的新意图
【发布时间】:2016-04-21 23:10:38
【问题描述】:

我有一个列表视图,当它单击某个选项时,我希望它创建一个新意图。就像一个菜单项。这是我第一次使用列表视图,所以我可能只是错过了正确的方法,但是有一个简单的解决方法吗?

private void registerClickCallback() {
    ListView list = (ListView) findViewById(R.id.mainlist);
    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View viewClicked, int position, long id) {
        TextView textView = (TextView) viewClicked;
        Toast.makeText(main.this, position, Toast.LENGTH_SHORT).show();
        if(textView.getText().toString() == "my Profile"){
            Intent intent = new Intent(this.getApplicationContext(), myProfile.class);
            startActivity(intent);
        }
    }
});

无法解析方法“getapplicationcontext”

【问题讨论】:

  • 看起来你在比较字符串错误。您应该使用.equals() 而不是==。如果还有其他问题,那么您需要更清楚到底发生了什么/没有发生什么
  • @codeMagic 这个问题与字符串比较没什么关系。IF 肯定需要修复,但实际问题是关于错误“无法解析方法 'getApplicationContext()' 因此问题不同..恕我直言
  • @FredMaggiowski 是的,我错过了。感谢您ping我并指出它。我会重新打开。字符串比较很可能是下一个问题。 Bahamit,请改用viewClicked.getContext()
  • 没有问题 :) 是的,字符串比较必须修复
  • 感谢大家的cmets!我已考虑您的意见,我的应用程序再次运行。但是,现在我遇到了一个新问题:java.lang.OutOfMemoryError: Failed to allocate a 108000012 byte allocation with 8388608 free bytes and 46MB until OOM...我内存不足。我是否必须关闭我以前的意图/活动?

标签: android listview android-intent onclick


【解决方案1】:

你不能使用this.getApplicationContext(),因为你在new AdapterView.OnItemClickListener()里面,this没有那个方法。

您应该创建一个包含应用程序上下文的类字段并使用它,或者按照@codeMagic 的建议使用viewClicked.getContext()

另外,您可能已经在 cmets 中读到过,您应该使用 .equals 进行字符串比较。 == 运算符是不够的。

【讨论】:

    【解决方案2】:

    试试-

    Intent intent = new Intent(MainActivity.this, myProfile.class);
    startActivity(intent);
    

    MainActivity 是您实施onItemClick() 的活动。 您应该将其替换为您的活动名称。

    【讨论】:

      猜你喜欢
      • 2019-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 2022-06-24
      相关资源
      最近更新 更多