Это недавний пост в моей недавней публикации, в котором я попытался вызвать метод из другого класса и ответить изменением TextView. Теперь я пытаюсь добавить для инициализации Bluetooth-адаптера на этот метод (BluetoothOn), однако я снова столкнулся с той же ошибкой, что приложение остановилось. С другой стороны, я могу запустить приложение без проблем, если объявить BLEadapter в методе Main.Почему я не могу инициализировать bluetooth по другому методу класса?
public class MainActivity extends Activity {
private BluetoothAdapter mBluetoothAdapter;
private static final int REQUEST_ENABLE_BT = 1;
private TextView textView;
//private View myView;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView =(TextView)findViewById(R.id.textView1);
addListenerOnButton();
}
private void addListenerOnButton() {
button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
enableBluetooth(arg0);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void enableBluetooth (View view){
BluetoothOn ble = new BluetoothOn();
ble.initializeBlue(textView);
}
}
В Мой класс Bluetooth
public class BluetoothOn extends MainActivity {
private TextView textView1;
private BluetoothAdapter mBluetoothAdapter;
private static final int REQUEST_ENABLE_BT = 1;
public void initializeBlue(View myView){
String BleisOn = "Bluetooth enabled !!!!";
textView1 = (TextView)myView.findViewById(R.id.textView1);
textView1.setText(BleisOn);
// Initializes Bluetooth adapter.
final BluetoothManager bluetoothManager =
(BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
mBluetoothAdapter = bluetoothManager.getAdapter();
// Ensures Bluetooth is available on the device and it is enabled. If not,
// displays a dialog requesting user permission to enable Bluetooth.
if (mBluetoothAdapter == null || !mBluetoothAdapter.isEnabled()) {
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}
}
}
Может кто-нибудь предоставить мне знания о том, как я могу вызывать методы моей основной деятельности, которая не будет вызывать приложение к сбою. Я просто начинающий, любезно объясняю, какие вещи мне нужно детально, я просто хочу создавать другие классы за пределами основного и вызывать методы, когда пользователь взаимодействует с Android-приложением. Я думаю, что я просто не передал значения другому классу должным образом, поэтому он не работает на андроиде ... Приложение сработает, как только я коснусь назначенной кнопки. Что мне нужно на этот код .. кстати вот ссылка на мой пост ранее, creating a separate class without a user interface пожалуйста, помогите спасибо хороших людей ...
Вот лог кошки
09-01 13:26:27.307: I/ActivityManager(19336): Timeline: Activity_idle id: [email protected] time:341763403
09-01 13:26:39.627: D/AndroidRuntime(21289): Shutting down VM
09-01 13:26:39.627: W/dalvikvm(21289): threadid=1: thread exiting with uncaught exception (group=0x4156cd88)
09-01 13:26:39.627: E/AndroidRuntime(21289): FATAL EXCEPTION: main
09-01 13:26:39.627: E/AndroidRuntime(21289): Process: com.example.thisapp, PID: 21289
09-01 13:26:39.627: E/AndroidRuntime(21289): java.lang.IllegalStateException: System services not available to Activities before onCreate()
09-01 13:26:39.627: E/AndroidRuntime(21289): at android.app.Activity.getSystemService(Activity.java:4532)
09-01 13:26:39.627: E/AndroidRuntime(21289): at com.example.thisapp.BluetoothOn.initializeBlue(BluetoothOn.java:27)
09-01 13:26:39.627: E/AndroidRuntime(21289): at com.example.thisapp.MainActivity.enableBluetooth(MainActivity.java:71)
09-01 13:26:39.627: E/AndroidRuntime(21289): at com.example.thisapp.MainActivity$1.onClick(MainActivity.java:43)
09-01 13:26:39.627: E/AndroidRuntime(21289): at android.view.View.performClick(View.java:4569)
09-01 13:26:39.627: E/AndroidRuntime(21289): at android.view.View$PerformClick.run(View.java:18553)
09-01 13:26:39.627: E/AndroidRuntime(21289): at android.os.Handler.handleCallback(Handler.java:733)
09-01 13:26:39.627: E/AndroidRuntime(21289): at android.os.Handler.dispatchMessage(Handler.java:95)
09-01 13:26:39.627: E/AndroidRuntime(21289): at android.os.Looper.loop(Looper.java:212)
09-01 13:26:39.627: E/AndroidRuntime(21289): at android.app.ActivityThread.main(ActivityThread.java:5151)
09-01 13:26:39.627: E/AndroidRuntime(21289): at java.lang.reflect.Method.invokeNative(Native Method)
09-01 13:26:39.627: E/AndroidRuntime(21289): at java.lang.reflect.Method.invoke(Method.java:515)
09-01 13:26:39.627: E/AndroidRuntime(21289): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:877)
09-01 13:26:39.627: E/AndroidRuntime(21289): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
09-01 13:26:39.627: E/AndroidRuntime(21289): at dalvik.system.NativeStart.main(Native Method)
09-01 13:26:41.487: I/Process(21289): Sending signal. PID: 21289 SIG: 9
Вы говорите, что приложение остановлено. Вывести вывод logcat. – eightx2
Возможный дубликат [К сожалению, MyApp остановлен. Как я могу это решить?] (Http://stackoverflow.com/questions/23353173/unelcome-myapp-has-stopped-how-can-i-solve-this) –
Угадайте: вы передаете 'TextView' для' initializeBlue() '. Этот метод пытается * найти * 'TextView' в' View' - поэтому 'textView1', вероятно,« null ». – eightx2