【问题标题】:How to add an intent to a navigation view tab?如何向导航视图选项卡添加意图?
【发布时间】:2020-06-23 13:24:22
【问题描述】:

所以我有一个导航视图,它从左侧滑动,带有一个名为蓝牙的选项卡。我希望该蓝牙按钮与另一个具有所有蓝牙功能的类连接。有没有办法和意图让我连接到那个功能类?抱歉,如果我不是很具体,我是 Android Studio 初学者。

我的导航视图与按钮:

我的主要课程:

public class PantallaDatos extends AppCompatActivity {

private DrawerLayout drawer;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pantalla_datos);

    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    drawer = findViewById(R.id.drawer_layout);

    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, 
    R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.addDrawerListener(toggle);
    toggle.syncState();

    ViewPager2 viewPager2 = findViewById(R.id.viewPager);
    viewPager2.setAdapter(new DatosPagerAdapter(this));

    TabLayout tabLayout = findViewById(R.id.tabLayout);
    TabLayoutMediator tabLayoutMediator = new TabLayoutMediator(
            tabLayout, viewPager2, new TabLayoutMediator.TabConfigurationStrategy(){

        @Override
        public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {

            switch(position){
                case 0:{
                    tab.setText("Medidas");
                    break;
                }
                case 1:{
                    tab.setText("Registros");
                    break;
                }
                case 2:{
                    tab.setText("Graficos");
                    break;
                }
            }
        }
    });
    tabLayoutMediator.attach();
}

@Override
public void onBackPressed() {
    if(drawer.isDrawerOpen(GravityCompat.START)){
        drawer.closeDrawer(GravityCompat.START);
    }else{
        super.onBackPressed();
    }

   }
 }

具有我想要连接到该按钮的所有功能的类(简化):

 public class AjustesConexionSensores extends AppCompatActivity implements 
 AdapterView.OnItemClickListener {
 private static final int REQUEST_ACCESS_COARSE_LOCATION = 1;
 private static final int REQUEST_ENABLE_BLUETOOTH = 11;
 private TextView mEstadoBlueTv;
 private ImageView mBluetIv;
 private ListView mLvEmparejados, mLvDispositivos;
 private Button mBotOnOff, mBotDescubrir, mBotEmp, mBotConectar;
 private BluetoothAdapter mBluetoothAdapter;
 private ArrayAdapter<String> listAdapter;
//Conexión bluetooth
private static final UUID MY_UUID_INSECURE = UUID.fromString("8ce255c0-200a-11e0-ac64-0800200c9a66");
BluetoothConnectionService mBluetoothConnection;
//Dispositivo BT y ArrayList de dispositivos
BluetoothDevice mBTDevice;
public ArrayList<BluetoothDevice> mBTDevices = new ArrayList<>();

//BROADCASTS
// BroadcastReceiver para ACTION_FOUND
private final BroadcastReceiver mBroadcastReceiver1 = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (action.equals(mBluetoothAdapter.ACTION_STATE_CHANGED)) {
            final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, mBluetoothAdapter.ERROR);

            switch(state){
                case BluetoothAdapter.STATE_OFF:
                    showToast("Bluetooth desactivado");
                    mBluetIv.setImageResource(R.drawable.bt_off);
                    break;
                case BluetoothAdapter.STATE_ON:
                    showToast("Bluetooth activado");
                    mBluetIv.setImageResource(R.drawable.bt_on);
                    break;
            }
        }
    }
};

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.ajustes_conexion_sensores);
    //Interfaz
    mEstadoBlueTv = findViewById(R.id.statusBluetoothTv);

    mBluetIv = findViewById(R.id.BluetoothIv);
    mBotOnOff = findViewById(R.id.BotOnOff);
    mBotEmp = findViewById(R.id.BotEmp);
    mBotDescubrir= findViewById(R.id.botDesc);
    mBotConectar = findViewById(R.id.botConectar);

    mLvEmparejados = findViewById(R.id.lvEmparejados);
    mLvDispositivos = (ListView) findViewById(R.id.lvDispositivos);
    //BT Adapter
    mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    //Descubrir dispositivos
        //List adapter para recoger los dispositivos detectados
    listAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
    mLvDispositivos.setAdapter(listAdapter);
        //Check del estado del Bluetooth
    checkBluetoothState();
        //Registramos el receptor para la acción de recibir
    registerReceiver(devicesFoundReceiver, new IntentFilter(BluetoothDevice.ACTION_FOUND));
    registerReceiver(devicesFoundReceiver, new 
    IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_STARTED));
    registerReceiver(devicesFoundReceiver, new 
    IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED));

    mLvDispositivos.setOnItemClickListener((AdapterView.OnItemClickListener) AjustesConexionSensores.this);


    // Comprobar si el Bluetooth está disponible
    if (mBluetoothAdapter == null) {
        mEstadoBlueTv.setText("Bluetooth no disponible.");
    } else {
        mEstadoBlueTv.setText("Bluetooth está disponible.");
    }

    // Establecer una imagen en función del estado del Bluetooth (on/off)
    if (mBluetoothAdapter.isEnabled()) {
        mBluetIv.setImageResource(R.drawable.bt_on);
    } else {
        mBluetIv.setImageResource(R.drawable.bt_off);
    }

    // Boton ON-OFF
    mBotOnOff.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           enableDisableBT();
        };
    });

    // Dispositivos emparejados
    mBotEmp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            checkBluetooth();
            bondedDevices();
        }
    });
    //Nuevos dispositivos
    mBotDescubrir.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           if (mBluetoothAdapter != null && mBluetoothAdapter.isEnabled()) {
               //Comprobamos que el coarse location esté permitido
               if (checkCoarseLocationPermission())
                    listAdapter.clear();
                    mBluetoothAdapter.startDiscovery();
           } else {
               checkBluetoothState();
           }
        }
    });
    //Conectar a dispositivo
    mBotConectar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startConnection();
        }
    });
    //Hacemos check del permiso al iniciar la app
    checkCoarseLocationPermission();
 }

提前谢谢你

【问题讨论】:

  • 您是在问如何处理NavigationView 的一般交互?我的意思是,我不确定你到底在哪里。我没有看到NavigationView 的任何代码,到目前为止,它似乎只有一个菜单项。

标签: android android-studio layout view tabs


【解决方案1】:

可能不是您专门寻找的,但如果您想通过启动另一个活动来处理它,因此使用另一个布局。你只需要设置一个意图并开始一个活动。您都可以将活动中的信息传递给新活动,下面是如何执行此操作的示例,希望对您有所帮助。

Intent myIntent = new Intent(myActivity.this, NewActivity.class);
        Bundle bundle = new Bundle();
        bundle.putString("Extra_info", somefunction.extrainfo());//Pass extra info as a string
        myIntent.putExtras(bundle);
        myActivity.this.startActivity(myIntent);//Run the new activity

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多