java - 创建一个没有用户界面的单独类

标签 java android class android-activity

我是 Android 开发和 Java 编程新手。我正在尝试创建一个没有新用户界面的单独的类。假设我有一个主要 Activity ,其中如果我单击一个按钮,它将启动一个类并调用其中的方法并在主要 Activity 上显示文本。

现在我已经创建了一个 Main Activity 和一个名为 BluetoothOn 的类:请看一下我的代码:

这是主要 Activity ,其中enablemyBluetooth方法是按钮单击

public class MainActivity{
....

....
public void enablemyBluetooth(View view){             

    BluetoothOn ble = new BluetoothOn();
    ble.initializeBlue();
}

}

现在我创建一个类,其中我计划在此处执行所有过程,而不干预程序的主要 Activity ,就像它在后台运行一样。在我的代码中,我只想更改 Textview 但当我在我的 Android 上运行它,它指出不幸的是该应用程序已停止。

public class BluetoothOn {

private void initializeBlue(){

    textView1 =(TextView)findViewById(R.id.textView1);
    textView1.setText(BleisOn);
}
}

请注意,我已经编译了这个程序,没有错误/所有变量都已声明。我尝试在 Main 上将蓝牙类创建为私有(private),并且它有效。我只是想将其创建为包中的另一个类来组织我的代码。

如果我想创建一个单独的类,我真的有必要创建另一个 Activity 吗?谁能给我提示我应该做什么或声明什么?请帮忙谢谢。

更新:谢谢您的所有回答,不幸的是我无法让这个简单的过程在另一个类上工作...我对 Java 很陌生,仍在学习我的方法..无论如何,这就是我遇到的情况。

我按照 unohu 建议的帖子进行操作,但它在 Main 上提供了一个错误:“BluetoothOn 类型中的初始化Blue() 方法不适用于参数。

这里是更完整的类代码:

主要 Activity :

public class MainActivity extends Activity { 

    public void enableBluetooth (View view){     

    BluetoothOn ble = new BluetoothOn();
    ble.initializeBlue();   // error on this part

    }       

}

蓝牙类:

 public class BluetoothOn{

        public TextView textView1;

    public void initializeBlue(View myView){
        String BleisOn = "connect me now";

        textView1 = (TextView)myView.findViewById(R.id.textView1);
        textView1.setText(BleisOn);
    }
}

注意:我在最初的帖子中出现了拼写错误,我将初始化声明为私有(private),但它应该是公共(public)的。我正在尝试尝试 luisdurazoa 建议,但我对界面不熟悉..

最佳答案

不,完全不需要,您不需要有一个单独的 Activity 来执行此操作,实际上您的方法是可以的,只是您不应该在 Activity 之外创建界面的成员,例如 TextView ,但是蓝牙可以放在外面,或者数据库连接等。

如果您尝试在 Activity 之外初始化 textView,而不是在类和 Activity 之间使用接口(interface),则很可能会遇到异常。

public interface IBluetooth{
    public void initBluetooth();
}

然后...

public class MainActivity implements IBluetooth{
....

....
public void enablemyBluetooth(View view){             

    BluetoothOn ble = new BluetoothOn(this);
}

}

@Override
initBluetooth(){
textView1 =(TextView)findViewById(R.id.textView1);
textView1.setText(BleisOn);
}

您的蓝牙类(class)...

public class BluetoothOn {

BluetoothOn(IBluetooth callback){
    //this will do the ui operations you need to do in the activity
    callback.initBluetooth();
    //do your stuff here
}
}

关于java - 创建一个没有用户界面的单独类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25588325/

相关文章:

C++::与所有其他类共享类

java - BIRT 主题不显示在 tomcat 上

java - java连接sqlite数据库的问题

android - 具有多个转换类型集的地理围栏 - Android

java - 使用 `==` 而不是 `equals()` 比较字符串时,如何使 Android Studio 或 IntelliJ 显示错误?

html - !important 相当于 HTML 类标签?

Swift:指向结构体与类的指针

java - 如何使用基于 Hibernate 的 DAO 从不同线程实现数据库中表的更新?

java - 更新 JPanel 中的 JList

android - 在创建位图时抛出 OutOfMemoryError