如何在单独的 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 条评论
登录 后参与评论

相关文章

startActivity在Java类崩溃

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

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

如何在 Java 类中实现 Kotlin 挂起方法?

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

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

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

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

如何解决侦听器类中的“错误:找不到符号方法startActivity(Intent)”?

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

如何在Java中创建定义为单独文件的类的对象?

如何在单独的Java类中存储和检索WebElement-Selenium

如何在Android中为Activity Java类和非Activity Java类创建单独的文件夹

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

如何在 Java 中的 Pojo 类中实现 Hashmap

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

如何在Adapter的OnClickListener中添加startActivity?

如何在ColdFusion中实现jCrypt Java类?

UML:如何在Java中实现Association类

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

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

Java的Atomic *类中的lazySet如何实现?

在Java中实现抽象方法/类

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

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

如何在HTML onclick中调用类函数

实现OnClick和setOnClick方法的Android类

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

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