コールバックのボタンのテキストを変更するにはどうすればよいですか?(アンドロイド)

バース

これが私のアプリです:Bluetoothスキャンを実行し、スキャン関数はデバイスを見つけるとコールバックします。特定のデバイス(デバイス名で認識される)が見つかったら、特定のボタンのテキストを「検索中」から「接続」に変更したいと思います。

ただし、コールバックのスコープ内でボタンに到達することはできません。

これを行う方法はありますか?これは純粋にスコープの問題だと思います。私はこの種のことについてほとんど経験がありません。

コード:

 Context context;
    context = this;

    update_str = "";

    Button ConnectButton = (Button) findViewById(R.id.Connect);
    ConnectButton.setText("Waiting for device to be found");

    Button ScanButton = (Button) findViewById(R.id.Scan);

    ScanButton.setOnClickListener(new View.OnClickListener() {
                                      public void onClick(View v) {
                                          btAdapter.startLeScan(leScanCallback);
                                      }
                                  });

    BluetoothAdapter.LeScanCallback leScanCallback = new BluetoothAdapter.LeScanCallback() {
        public void onLeScan(final BluetoothDevice device, final int rssi, final byte[] scanRecord) {

            update_str = update_str.concat(" " + device.getName());
            ((TextView)findViewById (R.id.text)).setText (update_str);
            nom_device = device.getName();
            if (nom_device=="bill_gates"){

                context.ConnectButton.setText(nom_device);

                context.ConnectButton.setOnClickListener(new View.OnClickListener() {

                    public void onClick(View v) {
                        BluetoothGatt bluetoothGatt = device.connectGatt(getApplicationContext(), false, context.btleGattCallback);
                    }

            });
        }

        }
    };

コンパイラエラーログ:

C:\Code\Grizz\app\src\main\java\com\grizz\grizzmvp\MainActivity.java
Error:(84, 28) error: cannot find symbol variable ConnectButton
Error:(89, 117) error: cannot find symbol variable btleGattCallback
Error:(86, 28) error: cannot find symbol variable ConnectButton
Note: C:\Code\Grizz\app\src\main\java\com\grizz\grizzmvp\MainActivity.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Error:Execution failed for task ':app:compileDebugJava'.
> Compilation failed; see the compiler error output for details.
Information:BUILD FAILED
Information:Total time: 1.381 secs
Information:4 errors
Information:0 warnings
Information:See complete output in console

バーシー

匿名の内部クラスがメソッドの本体内で定義されている場合、そのメソッドのスコープでfinalと宣言されたすべての変数は、内部クラス内からアクセスできます。スカラー値の場合、一度割り当てられると、最終変数の値は変更できません。オブジェクト値の場合、参照は変更できません。これにより、Javaコンパイラは実行時に変数の値を「キャプチャ」し、コピーをフィールドとして内部クラスに格納できます。外部メソッドが終了し、そのスタックフレームが削除されると、元の変数は失われますが、内部クラスのプライベートコピーはクラス自体のメモリに保持されます。

final Button ConnectButton = (Button) findViewById(R.id.Connect);
ConnectButton.setText("Waiting for device to be found");

final Button ScanButton = (Button) findViewById(R.id.Scan);
ScanButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        btAdapter.startLeScan(leScanCallback);
    }
});

BluetoothAdapter.LeScanCallback leScanCallback = new BluetoothAdapter.LeScanCallback() {
    public void onLeScan(final BluetoothDevice device, final int rssi, final byte[] scanRecord) {
        update_str = update_str.concat(" " + device.getName());
        ((TextView)findViewById (R.id.text)).setText (update_str);
        nom_device = device.getName();
        if (nom_device.equals("bill_gates")){

            ConnectButton.setText(nom_device);
            ConnectButton.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    BluetoothGatt bluetoothGatt = device.connectGatt(getApplicationContext(), false, context.btleGattCallback);
                }
            });
        }
    }
};

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

実行時にコンボボックスのドロップダウンスタイルを変更するにはどうすればよいですか?

分類Dev

別のボタンがクリックされたときにボタンのテキストを変更しても、同じように機能させるにはどうすればよいですか?アンドロイド

分類Dev

アンドロイドスタジオのタブ付きアクティビティテンプレートから円形のピンクのメールボックスアイコンを削除するにはどうすればよいですか?

分類Dev

3つのモードでボタンのテキストスタイルを変更するにはどうすればよいですか?

分類Dev

アンドロイドグーグルプレイスのオートコンプリートアクティビティでプレースホルダーテキストを変更するにはどうすればよいですか?

分類Dev

列挙型をWPFのコンボボックスコントロールにバインドするにはどうすればよいですか?

分類Dev

Mac AppStoreのosxアプリケーションにコマンドラインユーティリティをバンドルするにはどうすればよいですか(サンドボックスエンタイトルメントを使用)

分類Dev

タブバーの非アクティブなアイコン/テキストの色を変更するにはどうすればよいですか?

分類Dev

WPFダイアログボックスでバインドする追加のプロパティを作成せずに、テキストボックスで検証ルールを使用するにはどうすればよいですか?

分類Dev

アクションモードでテキスト/アイコンの色を変更するにはどうすればよいですか?

分類Dev

ドロップダウンボタンのアイコンの色を変更するにはどうすればよいですか?フラッター

分類Dev

grubコマンドライン(grubシェル)のキーボードレイアウトを変更するにはどうすればよいですか?

分類Dev

CSSグリッドレイアウトを使用して、スティッキーヘッダーとフッターを持つコンテンツのスクロールバーを取得するにはどうすればよいですか?

分類Dev

新しいツールバーでアクションオーバーフローメニューのテキストの色を変更せずに、タイトルのテキストとボタンの色を変更するにはどうすればよいですか?

分類Dev

IntelliJでKotlinの「このプロパティにはバッキングフィールドがあります」コードエディタのハイライトを変更するにはどうすればよいですか?

分類Dev

GNOMEでアクティブなウィンドウのタイトルバーの色を変更するにはどうすればよいですか?

分類Dev

コンボボックスはフォームロードイベントで最初のアイテムを選択します。フォームロードで最初のアイテムを選択しないように変更するにはどうすればよいですか。

分類Dev

グローバルタイプのコンテキスト変数をフラッターで作成するにはどうすればよいですか?

分類Dev

ボタン付きのスクロール可能なサイドバーで、横にあるプレーヤーのビデオのソースを変更できるHTML / CSSコードを作成するにはどうすればよいですか?

分類Dev

ドロップダウン ボックスを使用してスタイルシートを変更するにはどうすればよいですか?

分類Dev

2つのテキストボックスを1つのプロパティにバインドするにはどうすればよいですか?

分類Dev

ドロップダウンスタイルが.NETのDropDownListである場合、コンボボックスのテキストボックス部分の背景色を設定するにはどうすればよいですか?

分類Dev

Androidでマテリアルコンポーネントのテキストボタンのスタイルをプログラムで変更するにはどうすればよいですか?

分類Dev

ボタンクリックアンドロイドでアクティビティを変更するにはどうすればよいですか

分類Dev

ユーザーコントロールのプロパティをMainViewModelにバインドし、そのデータコンテキストを独自のビューモデルにバインドするにはどうすればよいですか?

分類Dev

QMLボタンQtクイックコントロール2の背景色を変更するにはどうすればよいですか?

分類Dev

どのテキストボックスがリピーターコントロールのどのレコードに接続されているかを確認するにはどうすればよいですか?

分類Dev

ifステートメントでボタンクリックの段落コンテンツを変更するにはどうすればよいですか?

分類Dev

WPFアプリケーションでテキストボックス入力が変更されたときにメインウィンドウの色を変更するにはどうすればよいですか?

Related 関連記事

  1. 1

    実行時にコンボボックスのドロップダウンスタイルを変更するにはどうすればよいですか?

  2. 2

    別のボタンがクリックされたときにボタンのテキストを変更しても、同じように機能させるにはどうすればよいですか?アンドロイド

  3. 3

    アンドロイドスタジオのタブ付きアクティビティテンプレートから円形のピンクのメールボックスアイコンを削除するにはどうすればよいですか?

  4. 4

    3つのモードでボタンのテキストスタイルを変更するにはどうすればよいですか?

  5. 5

    アンドロイドグーグルプレイスのオートコンプリートアクティビティでプレースホルダーテキストを変更するにはどうすればよいですか?

  6. 6

    列挙型をWPFのコンボボックスコントロールにバインドするにはどうすればよいですか?

  7. 7

    Mac AppStoreのosxアプリケーションにコマンドラインユーティリティをバンドルするにはどうすればよいですか(サンドボックスエンタイトルメントを使用)

  8. 8

    タブバーの非アクティブなアイコン/テキストの色を変更するにはどうすればよいですか?

  9. 9

    WPFダイアログボックスでバインドする追加のプロパティを作成せずに、テキストボックスで検証ルールを使用するにはどうすればよいですか?

  10. 10

    アクションモードでテキスト/アイコンの色を変更するにはどうすればよいですか?

  11. 11

    ドロップダウンボタンのアイコンの色を変更するにはどうすればよいですか?フラッター

  12. 12

    grubコマンドライン(grubシェル)のキーボードレイアウトを変更するにはどうすればよいですか?

  13. 13

    CSSグリッドレイアウトを使用して、スティッキーヘッダーとフッターを持つコンテンツのスクロールバーを取得するにはどうすればよいですか?

  14. 14

    新しいツールバーでアクションオーバーフローメニューのテキストの色を変更せずに、タイトルのテキストとボタンの色を変更するにはどうすればよいですか?

  15. 15

    IntelliJでKotlinの「このプロパティにはバッキングフィールドがあります」コードエディタのハイライトを変更するにはどうすればよいですか?

  16. 16

    GNOMEでアクティブなウィンドウのタイトルバーの色を変更するにはどうすればよいですか?

  17. 17

    コンボボックスはフォームロードイベントで最初のアイテムを選択します。フォームロードで最初のアイテムを選択しないように変更するにはどうすればよいですか。

  18. 18

    グローバルタイプのコンテキスト変数をフラッターで作成するにはどうすればよいですか?

  19. 19

    ボタン付きのスクロール可能なサイドバーで、横にあるプレーヤーのビデオのソースを変更できるHTML / CSSコードを作成するにはどうすればよいですか?

  20. 20

    ドロップダウン ボックスを使用してスタイルシートを変更するにはどうすればよいですか?

  21. 21

    2つのテキストボックスを1つのプロパティにバインドするにはどうすればよいですか?

  22. 22

    ドロップダウンスタイルが.NETのDropDownListである場合、コンボボックスのテキストボックス部分の背景色を設定するにはどうすればよいですか?

  23. 23

    Androidでマテリアルコンポーネントのテキストボタンのスタイルをプログラムで変更するにはどうすればよいですか?

  24. 24

    ボタンクリックアンドロイドでアクティビティを変更するにはどうすればよいですか

  25. 25

    ユーザーコントロールのプロパティをMainViewModelにバインドし、そのデータコンテキストを独自のビューモデルにバインドするにはどうすればよいですか?

  26. 26

    QMLボタンQtクイックコントロール2の背景色を変更するにはどうすればよいですか?

  27. 27

    どのテキストボックスがリピーターコントロールのどのレコードに接続されているかを確認するにはどうすればよいですか?

  28. 28

    ifステートメントでボタンクリックの段落コンテンツを変更するにはどうすればよいですか?

  29. 29

    WPFアプリケーションでテキストボックス入力が変更されたときにメインウィンドウの色を変更するにはどうすればよいですか?

ホットタグ

アーカイブ