綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] 呼叫其他class的function的問題 ? (與藍芽有關)

[複製連結] 查看: 4266|回覆: 6|好評: 0
跳轉到指定樓層
樓主
p88688181 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2013-9-15 16:45

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
本帖最後由 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 問題已解!! 感恩
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
sky1988a | 收聽TA | 只看該作者
發表於 2013-9-16 11:31
ImageViewHelper 是什麼!

評分

參與人數 1幫助 +1 收起 理由
p88688181 + 1

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

板凳
 樓主| p88688181 | 收聽TA | 只看該作者
發表於 2013-9-16 11:42
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

地板
sky1988a | 收聽TA | 只看該作者
發表於 2013-9-18 17:41
貼上程式碼會比較容易理解,function 的 參數傳入都要正確,如果用到很多Class C的function可以讓Class A extends Class C。
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

5
 樓主| p88688181 | 收聽TA | 只看該作者
發表於 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);
    }
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

6
sky1988a | 收聽TA | 只看該作者
發表於 2013-9-22 09:15
synchronized (this) -> this應該要帶入Class C的 Context
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

7
 樓主| p88688181 | 收聽TA | 只看該作者
發表於 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 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則