Android: Bluetooth-чат. подключиться к mHandler в MainActivity из другого класса - PullRequest
0 голосов
/ 10 декабря 2011

Я сделал учебник по Android-чату.Вместо использования OnClickListeners в основной активности, я хочу использовать OnClickListeners в другом классе (MyCursorAdapter.class).

Я думаю, это очень простая проблема Java.Но я не знаю, как это реализовать (как я могу использовать mHandler из другого занятия в моем классе).

Кто-нибудь может мне помочь?

Приветствия Феликса

Источник в MainActivity.class (работает хорошо)

public class MainActivity extends ListActivity {
private BluetoothService mChatService = null;

...
    private void setupChat() { 
    mButton1 = (Button) findViewById(R.id.button1);

    mButton1.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            byte[] out = {32};  
            mChatService.write(out);
            mChatService = new BluetoothService(this, mHandler);
        }
   });
 }

Источник В MyCursorAdapter.class (здесь я хочу реализовать ту же функцию)

public class MyCursorAdapter extends ResourceCursorAdapter implements OnClickListener {
...

        private class OffItemClickListener implements OnClickListener {
        private int position;

        public OffItemClickListener(int position) {
            super();
            this.position = position;
        }

        @Override
        public void onClick(View v) {
            mCursor.moveToPosition(position);
               // byte[] out = {32};
               // MainAcitivity.talkChat(out);  
               // error: "non-static variable this cannot be referenced from a static context"


               // Here i want to the the same like in the MainActivity class. 
               // But how can I connect to the mHandler?         
        }
        }
  }

Комментарий:

ЭкземплярMyCursorAdapter в MainActivity

private void fillData() {
    Cursor notesCursor = mDbHelper.fetchAllNotes();
    startManagingCursor(notesCursor);


    adapter = new MyCursorAdapter(this, notesCursor);
    setListAdapter(adapter);
}

Комментарий комментария:

Или как я могу вызвать этот метод MainActivity из MyCursorAdapter?:

public void talkChat(byte[] out) { 
   mChatService.write(out); 
   mChatService = new BluetoothService(this, mHandler); 
 }

1 Ответ

3 голосов
/ 10 декабря 2011

Создайте экземпляр mhandler в своем классе MyCursorAdapter

     public class MyCursorAdapter extends ResourceCursorAdapter implements  
    OnClickListener {

    private Handler mHandler;

    public void setMHandler(Handler mHandler){
        this.mHandler = mHandler;

    private class OffItemClickListener implements OnClickListener {
    private int position;

    public OffItemClickListener(int position) {
        super();
        this.position = position;
    }

    @Override
    public void onClick(View v) {
        mCursor.moveToPosition(position);
           // byte[] out = {32};
           // MainAcitivity.talkChat(out);  
           // error: "non-static variable this cannot be referenced from a static context"

             Use your mhandler...
           // Here i want to the the same like in the MainActivity class. 
           // But how can I connect to the mHandler?         
    }
    }
    }

и сделайте ссылку на него из своей MainActivity

private void fillData() {
  Cursor notesCursor = mDbHelper.fetchAllNotes();
 startManagingCursor(notesCursor);

adapter = new MyCursorAdapter(this, notesCursor);
adapter.setMHandler(mHandler); //Reference  
setListAdapter(adapter);

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...