C # Xamarin Android - изменение свойств кнопки вне функции onCreate () - PullRequest
0 голосов
/ 14 декабря 2018

Я настроил действие с некоторыми кнопками.Одна кнопка используется для подключения Bluetooth.Итак, действие начинается, и в какой-то момент пользователь нажимает «Запустить Bluetooth», затем устанавливается соединение Bluetooth, и после того, как это будет сделано, я хочу включить еще одну кнопку для получения дополнительных опций.

Мой вопрос: Как можноИзменить кнопку с Enabled = False на Enabled = True вне функции onCreate () действия?Мой код: в методе onActivityResult () я хочу включить кнопку buttonConnect.Мое решение, похоже, не работает.

Я мог найти только на ClickListeners, но это не то, что мне нужно ...

using Android.App;
using Android.OS;
using Android.Support.V7.App;
using Android.Runtime;
using Android.Widget;
using Android.Bluetooth;
using Android.Util;

using Android.Content;
using System.Reflection;

namespace firstTry3
{
    [Activity(Label = "@string/app_name")]
    public class bluetoothConnectionActivity : AppCompatActivity
{
    BluetoothAdapter mBluetoothAdapter;
    const int REQUEST_ENABLE_BT = 1;        //necessary to start bluetooth, must be greater than 0
    string tag = "blueApp";


    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.activity_bluetoothConnection);

        Button buttonBluetoothOn = FindViewById<Button>(Resource.Id.bluetoothOn);
        Button buttonConnect = FindViewById<Button>(Resource.Id.connectButton);
        Button buttonDissconnect = FindViewById<Button>(Resource.Id.disconnectButton);

        mBluetoothAdapter = BluetoothAdapter.DefaultAdapter;

        buttonBluetoothOn.Click += (sender, e) =>
        {
            if (!mBluetoothAdapter.IsEnabled)
            {
                Log.Info(tag, MethodBase.GetCurrentMethod().Name + ": Device does not have bluetooth capabilities");
            }
            enableBluetooth();
        };
    }

    public void enableBluetooth() {
        if(mBluetoothAdapter == null)
        {
            Log.Warn(tag, MethodBase.GetCurrentMethod().Name + ": Device does not have bluetooth capabilities");
        }
        if (!mBluetoothAdapter.IsEnabled)
        {
            Intent enableBTIntent = new Intent(BluetoothAdapter.ActionRequestEnable);
            StartActivityForResult(enableBTIntent, REQUEST_ENABLE_BT);
        }
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if (resultCode == constants.RESULT_OK)
        {
            Log.Info(tag, MethodBase.GetCurrentMethod().Name + ": Bluetooth has been activated");
            Button buttonConnect = FindViewById<Button>(Resource.Id.connectButton);
            buttonConnect.Enabled = true;

        }
        if (resultCode == constants.RESULT_CANCELLED){
            Log.Info(tag, MethodBase.GetCurrentMethod().Name + ": Bluetooth has NOT been activated");
        }
        else
        {
            Log.Error(tag, MethodBase.GetCurrentMethod().Name + ": invalid resultCode");
        }
    }
}

}

1 Ответ

0 голосов
/ 14 декабря 2018

Объявите ваш button на уровне activity и инициализируйте его в OnCreate, чем вы можете использовать в любом месте текущего activity.Как это

public class bluetoothConnectionActivity : AppCompatActivity
{
    Button buttonConnect;
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        SetContentView(Resource.Layout.activity_bluetoothConnection);
        buttonConnect = FindViewById<Button>(Resource.Id.connectButton);
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if (resultCode == constants.RESULT_OK)
        {
            Log.Info(tag, MethodBase.GetCurrentMethod().Name + ": Bluetooth has been activated");
            buttonConnect.Enabled = true;
        }
    }
}
...