没有用户界面创建一个单独的类(creating a separate class without a

2019-10-30 05:55发布

我是新的android开发和Java编程。 我想没有一个新的用户界面来创建一个单独的类。 假设我有一个主要活动,其中,如果我点击一个按钮,它就会启动类,并调用它的方法,并显示在主活动的文本。

现在,我已创建创造了一个主要活动和其命名为BluetoothOn类:请看看我的代码:

这是主要的活动,其中enablemyBluetooth方法是按一下按钮

public class MainActivity{
....

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

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

}

现在,我创建了一个类,其中,我打算在这里做的所有进程,而不介入对方案的主要活动,就像是在我的代码在后台运行。这里我只是想改变TextView的,但是当我运行它我的Android也指出,不幸的是,应用程序停止。

public class BluetoothOn {

private void initializeBlue(){

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

请注意,我并没有错误编译该节目/所有变量声明。 我试图创建蓝牙类作为私人的主要和它的作品。 我只是想将其创建为包装上的组织我的代码的类。

难道真的有必要,我要创建另一个活动,如果我想创建一个单独的类? 谁能给我暗示我应该怎么做或宣布? 请帮忙,谢谢。

更新:感谢你所有的答案,可惜我不能让这个简单的过程,对其他类的工作......我很新的Java和仍然在学习的路上..反正这里是我遇到了什么。

我接着unohu建议后但它为我提供了在主要的错误“来initializeBlue()在类型BluetoothOn的方法是不适用的论点。

下面是类的更完整的代码:

主要活动:

public class MainActivity extends Activity { 

    public void enableBluetooth (View view){     

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

    }       

}

BluetoothOn类:

 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);
    }
}

注意:我上了初始后一个错字,我宣布初始化为私有,但它应该是公开的。 我试图尝试luisdurazoa建议然而我不是接口熟悉..

Answer 1:

号不要创建新的活动。 只是通过视图对象同时呼吁initializeBlue()。 使用(的TextView)YourViewObject.findViewById(R.id.textView1),而不是(的TextView)findViewById(R.id.textView1)在BluetoothOn。

public class MainActivity{

//Declare a textview 
private TextView textView;

 protected void onCreate(Bundle savedInstanceState) {
 .....
  textView =(TextView)myView.findViewById(R.id.textView1);
....
 }
....
public void enablemyBluetooth(View view){             

    BluetoothOn ble = new BluetoothOn();

   //Pass textview as argument
    ble.initializeBlue(textView);
    }
}

public class BluetoothOn {

private void initializeBlue(View myView){

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


Answer 2:

没有,一点都没有,你不需要有一个单独的活动这样做,实际上你的做法是,除了OK,你不应该创建接口的成员的活动外,像TextView的,但蓝牙的逻辑是确定有它外面,或数据库连接和这样。

如果你尝试初始化一个TextView的活动之外,而不是使用你的类和您的活动之间的接口,你最有可能得到一个异常。

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);
}

蓝牙类...

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
}
}


Answer 3:

findViewById(id)方法被调用一个活动,并且同样地,只能找到属于该活动的布局图。

这意味着你不能调用此方法用在活动中的特定视图,其中该查看未声明的ID。

为了能够从您获得查看BluetoothOn类,你应该通过活动的类,然后调用findViewById(id)方法:

MainActivity

public class MainActivity{
....

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

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

}

BluetoothOn

public class BluetoothOn {

    private void initializeBlue(Activity activity){

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


文章来源: creating a separate class without a user interface