Android 台灣中文網

標題: 呼叫其他class的function的問題 ? (與藍芽有關) [打印本頁]

作者: p88688181    時間: 2013-9-15 16:45
標題: 呼叫其他class的function的問題 ? (與藍芽有關)
本帖最後由 p88688181 於 2013-9-17 23:41 編輯

大大好!!

小弟想請問一些程式寫法的問題

現在已經知道如何呼叫其他class裡面的function了

我用             BluetoothChat cls2= new BluetoothChat();
                   cls2.sendMessage("123");


但是會出錯 程式直接終止

原因是那個class的function裡面又呼叫了其他class的function

有點饒舌,講白話點 ~

class A ,class B,class C

我現在想在class B 呼叫 class A的function ---> 呼叫成功

但是因為class A的function "sendMessage()" 裡面有呼叫class C的function "write()"---> 導致 class B 不知道裡面的東西是什麼 ---> 程式執行失敗


不知道大大能否了解我的意思~"~

求解3q!



PS: ImageViewHelper 問題已解!! 感恩
作者: sky1988a    時間: 2013-9-16 11:31
ImageViewHelper 是什麼!
作者: p88688181    時間: 2013-9-16 11:42
sky1988a 發表於 2013-9-16 11:31
ImageViewHelper 是什麼!

拖曳的function
加上他圖片就可拖曳了
作者: sky1988a    時間: 2013-9-18 17:41
貼上程式碼會比較容易理解,function 的 參數傳入都要正確,如果用到很多Class C的function可以讓Class A extends Class C。
作者: p88688181    時間: 2013-9-18 23:24
本帖最後由 p88688181 於 2013-9-18 23:26 編輯
sky1988a 發表於 2013-9-18 17:41
貼上程式碼會比較容易理解,function 的 參數傳入都要正確,如果用到很多Class C的function可以讓Class A e ...


恩 參數是確定可以的

本來我是把class C 的code跟class A寫在一起  

寫在class A裡時   "sendMessage()"這個function 沒有問題 可以呼叫

把code分出來變class C後  "sendMessage()" 就不能用了會當掉 ...      ( 已經把class C 繼承 class A)

debug沒顯示錯誤

所以我猜想是因為"sendMessage()"這個function裡面又呼叫了class B 的東西  

讓class C 抓不到東西 才造成當機,程式終止 ~

我稍為貼一下我的code

class A 裡面的:

public void sendMessage(String message) {
        if (mChatService.getState() != BluetoothChatService.STATE_CONNECTED) {
            Toast.makeText(this, R.string.not_connected, Toast.LENGTH_SHORT).show();
            return;
        }
        if (message.length() > 0) {           
            byte[] send = message.getBytes();
            class B.write(send);    ----->用到class B的function
}

class C 呼叫它:

class A cls2= new class A();

                        cls2.sendMessage("123");

class B 裡的function:

public void write(byte[] out) {
        
        ConnectedThread r;     
        synchronized (this) {
            if (mState != STATE_CONNECTED) return;
            r = mConnectedThread;
        }
        r.write(out);
    }
作者: sky1988a    時間: 2013-9-22 09:15
synchronized (this) -> this應該要帶入Class C的 Context
作者: p88688181    時間: 2013-9-22 21:13
本帖最後由 p88688181 於 2013-9-22 21:27 編輯
sky1988a 發表於 2013-9-22 09:15
synchronized (this) -> this應該要帶入Class C的 Context


多謝大大的回覆!
請問 synchronized (this) 是做什麼用的呢?
要如何帶入Class C 的 內容@@


我嘗試把synchronized (this)刪掉看看
依舊相同




歡迎光臨 Android 台灣中文網 (https://apk.tw/) Powered by Discuz! X3.1