我是新的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建议然而我不是接口熟悉..
号不要创建新的活动。 只是通过视图对象同时呼吁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);
}
}
没有,一点都没有,你不需要有一个单独的活动这样做,实际上你的做法是,除了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
}
}
该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);
}
}