如何在单独的 Java 类的 OnClick() 方法中实现 startActivity()?

埃斯拉·贝尼

所以我制作了三个 3 个 java 文件。

  1. 主要活动课
  2. ButtonListener.java(单独的java类)
  3. PurpleActivty.class(活动)

我在 ButtonListener.java 文件中实现了 OnclickListener 和 OnClick 方法。

我想在 ButtonListener 文件的 onClick(View v) 中启动意图 startActivity()。但它在 startActivity() 行上抛出错误。

我知道我可以在 AvtivityClass 的 onCreate 下创建 OnClick 方法,但我不想这样做,因为我已经创建了一个可以处理所有按钮侦听器的单独 java 文件。

文件 MainActivity.java

public class MainActivity extends AppCompatActivity  {

   public Button intentPurple;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        intentPurple=findViewById(R.id.button5);
       Intent gg= new Intent(MainActivity.this, PurpleActivty.class);
        ButtonListener B= new ButtonListener(gg);

        intentPurple.setOnClickListener(B);

    }

}

文件 ButtonListener.java

public class ButtonListener  implements View.OnClickListener {
     private Intent g;


    public ButtonListener(Intent F) {

        this.g=F;
    }
 @Override

        public void onClick(View v) {
            switch(v.getId()) {

                case R.id.button5:

          startActivity(g);  // this line is error(red underline g) error msg
           break;            //is "startActivity() in ContextCompat cannot be 
                            //applied to"
            }}}

有什么办法可以解决这个问题?

蒂姆·比格莱森

您需要startActivity从活动的上下文中调用,而不是从自定义处理程序类中调用重构ButtonListener为:

public class ButtonListener implements View.OnClickListener {
    private Intent g;
    private Context caller;

    public ButtonListener(Intent f, Context caller) {
        this.g = f;
        this.caller = caller;
    }

    @Override
    public void onClick(View v) {
        switch(v.getId()) {
            case R.id.button5:
                caller.startActivity(g);
                break;
        }
    }
}

然后像这样调用你的听众:

intentPurple = findViewById(R.id.button5);
Intent gg = new Intent(MainActivity.this, PurpleActivty.class);
ButtonListener b = new ButtonListener(gg, MainActivity.this);
intentPurple.setOnClickListener(b);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

startActivity在Java类崩溃

来自分类Dev

如何在单独的Java类中引用线程?

来自分类Dev

如何在不同的 Java 类中设置单独的日志级别?

来自分类Dev

如何在Java中实现许多类通用的定制方法?

来自分类Dev

如何在Android的button.onClick()中的片段内使用startActivity()

来自分类Dev

如何先手在实现类中的方法与Java的通用接口

来自分类Dev

如何使用其他类的Java Android onClick方法?

来自分类Dev

如何在Java的单独类中创建两个对象引用变量

来自分类Dev

如何在Java的实现类中的抽象类内实现抽象类?

来自分类Dev

如何在Java的实现类中的抽象类内实现抽象类?

来自分类Dev

java如何在实现父方法的同时扩展类

来自分类Dev

如何实现抽象类的方法?(Java)

来自分类Dev

如何在Adapter的OnClickListener中添加startActivity?

来自分类Dev

如何在Java实现中初始化元组类

来自分类Dev

如何在Java中实现类级别锁定?

来自分类Dev

如何从 ArrayAdapter 类的内部匿名类调用 startActivity?

来自分类Dev

java中如何实现类级别锁定?

来自分类Dev

在Java中实现枚举类的最佳方法

来自分类Dev

无法将 OnClickListener 实现到单独的 Java 类中

来自分类Dev

如何在JavaScript中将类方法用作onclick处理程序?

来自分类Dev

实现OnClick和setOnClick方法的Android类

来自分类Dev

如何在Java中实现方法链接?

来自分类Dev

如何在Java中实现接口方法?

来自分类Dev

如何在单独的程序中使用类方法?

来自分类Dev

如何从Java中的另一个类实现start(Stage)方法?

来自分类Dev

如何在单独的类中访问私有构造函数?

来自分类Dev

如何在Codeigniter的单独类函数中执行SQL查询

来自分类Dev

如何在Codeigniter的单独类函数中执行SQL查询

来自分类Dev

从另一个类调用StartActivity(intent)方法

Related 相关文章

  1. 1

    startActivity在Java类崩溃

  2. 2

    如何在单独的Java类中引用线程?

  3. 3

    如何在不同的 Java 类中设置单独的日志级别?

  4. 4

    如何在Java中实现许多类通用的定制方法?

  5. 5

    如何在Android的button.onClick()中的片段内使用startActivity()

  6. 6

    如何先手在实现类中的方法与Java的通用接口

  7. 7

    如何使用其他类的Java Android onClick方法?

  8. 8

    如何在Java的单独类中创建两个对象引用变量

  9. 9

    如何在Java的实现类中的抽象类内实现抽象类?

  10. 10

    如何在Java的实现类中的抽象类内实现抽象类?

  11. 11

    java如何在实现父方法的同时扩展类

  12. 12

    如何实现抽象类的方法?(Java)

  13. 13

    如何在Adapter的OnClickListener中添加startActivity?

  14. 14

    如何在Java实现中初始化元组类

  15. 15

    如何在Java中实现类级别锁定?

  16. 16

    如何从 ArrayAdapter 类的内部匿名类调用 startActivity?

  17. 17

    java中如何实现类级别锁定?

  18. 18

    在Java中实现枚举类的最佳方法

  19. 19

    无法将 OnClickListener 实现到单独的 Java 类中

  20. 20

    如何在JavaScript中将类方法用作onclick处理程序?

  21. 21

    实现OnClick和setOnClick方法的Android类

  22. 22

    如何在Java中实现方法链接?

  23. 23

    如何在Java中实现接口方法?

  24. 24

    如何在单独的程序中使用类方法?

  25. 25

    如何从Java中的另一个类实现start(Stage)方法?

  26. 26

    如何在单独的类中访问私有构造函数?

  27. 27

    如何在Codeigniter的单独类函数中执行SQL查询

  28. 28

    如何在Codeigniter的单独类函数中执行SQL查询

  29. 29

    从另一个类调用StartActivity(intent)方法

热门标签

归档