导航
  • 主页
  • 音视频
  • Camera
  • UI
  • 协议
  • SDK
  • NDK
  • Flutter
  • ADB
  • Android Studio
  • 模拟器
  • 问答

按钮 使用匿名内部类 的一些问题

可转债量化分析 中山大学 2014-09-30 08:36:50
poker_bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//使用整个包名来跳转
Intent intent=new Intent();
//Intent intent=new Intent(MainActivity.this,poker_game.class);
intent.setClassName(this,"com.example.hackertool.poker_game");
//intent.setClassName(MainActivity.this, "com.example.hackertool.poker_game");

startActivities(intent);

}
});
//为什么失败了?

我是初哥,所以 我觉得是不是 在 this的地方 应该用 Mainactivity.this ?

返回的错误信息是:

Error:(39, 17) error: no suitable method found for startActivities(Intent)
method Activity.startActivities(Intent[],Bundle) is not applicable
(actual and formal argument lists differ in length)
method Activity.startActivities(Intent[]) is not applicable
(actual argument Intent cannot be converted to Intent[] by method invocation conversion)
method ContextWrapper.startActivities(Intent[],Bundle) is not applicable
(actual and formal argument lists differ in length)
method ContextWrapper.startActivities(Intent[]) is not applicable
(actual argument Intent cannot be converted to Intent[] by method invocation conversion)
method Context.startActivities(Intent[],Bundle) is not applicable
(actual and formal argument lists differ in length)
method Context.startActivities(Intent[]) is not applicable
(actual argument Intent cannot be converted to Intent[] by method invocation conversion)
...全文
81 点赞 收藏 3
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hcwfc 2014-10-02
1、这里的this指的是你的实现的OnClickListener接口的这个类,所以this不行需要像他们说的MainActivity.this才能引用到Activity。 2、建议在跳转Intent的时候做一个检查,这样不会让你的程序崩溃(如果你的手机上没有你要打开的APP):

 Intent intent = new Intent();
        if (intent.resolveActivity(getPackageManager())  != null)
        {
            startActivity(intent);
        }
回复
svenwang 2014-09-30
应该用MainActivity.this,指明是MainActivity对象。
回复
小妖森 2014-09-30
因为你用的是匿名内部类。所以intent.setClassName(this,"com.example.hackertool.poker_game");中的this指的是这个匿名内部类。 intent.setClassName(MainActivity.this, "com.example.hackertool.poker_game");这样写是正确的。
回复
发动态
发帖子
Android
创建于2009-10-09

7.8w+

社区成员

移动平台 Android
申请成为版主
社区公告
暂无公告