###前提・実現したいこと
BluetoothChatを編集して通信が切れたら新しいActivityを開くようにしたいです。
既存のBluetoothChatに SubActivity.java Sub.xmlを追加しました。
変更した点は、BluetoothChatFragment.javaにIntentのコードを追加したことと、
AndroidMainfest.xmlにSubActivityを追加したことと、
SubActivity.javaにボタンを押すとActivityが終了するコードを追加したことです。
###発生している問題・エラーメッセージ
発生していたエラーが消えたので、実機テストをしてみようと思ったら
アプリが強制終了してしまいます。
原因もわからないので、お手上げです。
###該当のソースコード
BluetoothChatFragment.java
private final Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { FragmentActivity activity = getActivity(); switch (msg.what) { case Constants.MESSAGE_STATE_CHANGE: switch (msg.arg1) { case BluetoothChatService.STATE_CONNECTED: setStatus(getString(R.string.title_connected_to, mConnectedDeviceName)); mConversationArrayAdapter.clear(); break; case BluetoothChatService.STATE_CONNECTING: setStatus(R.string.title_connecting); break; case BluetoothChatService.STATE_LISTEN: case BluetoothChatService.STATE_NONE: setStatus(R.string.title_not_connected); //ここのIntent部分を追加しました。 Intent intent = new Intent(getActivity(), SubActivity.class); // 次画面のアクティビティ起動 startActivity(intent); break; } break; case Constants.MESSAGE_WRITE: byte[] writeBuf = (byte[]) msg.obj; // construct a string from the buffer String writeMessage = new String(writeBuf); mConversationArrayAdapter.add("Me: " + writeMessage); break; case Constants.MESSAGE_READ: byte[] readBuf = (byte[]) msg.obj; // construct a string from the valid bytes in the buffer String readMessage = new String(readBuf, 0, msg.arg1); mConversationArrayAdapter.add(mConnectedDeviceName + ": " + readMessage); break; case Constants.MESSAGE_DEVICE_NAME: // save the connected device's name mConnectedDeviceName = msg.getData().getString(Constants.DEVICE_NAME); if (null != activity) { Toast.makeText(activity, "Connected to " + mConnectedDeviceName, Toast.LENGTH_SHORT).show(); } break; case Constants.MESSAGE_TOAST: if (null != activity) { Toast.makeText(activity, msg.getData().getString(Constants.TOAST), Toast.LENGTH_SHORT).show(); } break; } } };
AndroidMainfest.xml
<activity android:name=".MainActivity" android:configChanges="orientation|keyboardHidden" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> //このSubActivityを追加しました。 <activity android:name=".SubActivity"></activity> <activity android:name=".DeviceListActivity" android:configChanges="orientation|keyboardHidden" android:label="@string/select_device" android:theme="@android:style/Theme.Holo.Dialog"/>
SubActivity.java
public class SubActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sub); Button btn = (Button)findViewById(R.id.btn1); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub // 次画面のアクティビティ終了 finish(); } }); } }
###試したこと
追加したコードをコメントアウトして原因を突き止めようとしましたが、わかりませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
AndroidStudio 2.2.3
回答1件
あなたの回答
tips
プレビュー