Недавно я просмотрел руководство Филипа Лакнера на YouTube () и создал базовое приложение Bluetooth. Я планирую развивать это приложениеВ настоящее время я рассматриваю возможность использования фильтров Intent для передачи информации в макете с двумя панелями. Намерения кажется работают, но я не уверен, но я заметил несколько вещей, с которыми мне нужна помощь.
Во-первых, у меня макет с двумя панелями, Я хотел бы отправить имя устройства Bluetooth через фрагмент через намерение, но когда я перехожу намерение на другую сторону, оно генерирует ноль.
Я пробовал все виды нулевых значений. проверки, изменения и импровизации (у меня есть несколько очень уникальных результатов), но я до сих пор не получил имя Bluetooth, которое мне нужно, и мне действительно интересно, что я делаю неправильно.
Во-вторых, я поместили оператор журнала в оператор намерения PutExtra, журнал никогда не отправляется в logcat и, кажется, даже не просматривается, я считаю, что это может быть проблемой, но не знаю, как ее решить
Я использую Hilt и Dagger, может ли это быть частью проблемы?
Вот мое основное действие
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
if (DEVICE_ID != null && !DEVICE_ID.isEmpty() && !DEVICE_ID.equals("null"))
intent.let {
// val devices = it.getStringExtra(DEVICES)
// findViewById(R.id.tt_conf_label)
// .text = getString(R.string.tt_confirmation_label, devices)
val transfer = intent.extras?.getString(DEVICE_ID)
findViewById(R.id.tt_conf_label)
.text = getString(R.string.tt_confirmation_label, transfer)
Log.d("test3 MA", "DEVICEID:"+ DEVICE_ID)
}
}
}
import android.annotation.SuppressLint
import android.content.ContentValues.TAG
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material.Button
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.core.content.ContextCompat.startActivity
import androidx.fragment.app.Fragment
import com.example.fragmentintro.StyleFragment
import com.example.fragmentintro.exchange.BluetoothDevice
import com.example.fragmentintro.presentation.BluetoothUiState
import com.example.fragmentintro.presentation.MainActivity
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import com.example.fragmentintro.R
const val DEVICE_ID = "DEVICE_ID"
@Composable
fun DeviceScreen(
state: BluetoothUiState,
onStartScan: () -> Unit,
onStopScan: () -> Unit
) {
Column(
modifier = Modifier
.fillMaxSize()
) {
BluetoothDeviceList(
pairedDevices = state.pairedDevices,
scannedDevices = state.scannedDevices,
onClick = {},
modifier = Modifier
.fillMaxWidth()
.weight(1f)
)
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceAround
) {
Button(onClick = onStartScan) {
Text(text = "Start scan")
}
Button(onClick = onStopScan) {
Text(text = "Stop scan")
}
}
}
}
@Composable
fun BluetoothDeviceList(
pairedDevices: List,
scannedDevices: List,
onClick: (BluetoothDevice) -> Unit,
modifier: Modifier = Modifier
) {
LazyColumn(
modifier = modifier
) {
item {
Text(
text = "Paired Devices",
fontWeight = FontWeight.Bold,
fontSize = 24.sp,
modifier = Modifier.padding(16.dp)
)
}
items(pairedDevices) { device ->
Text(
text = device.name ?: "(No name)",
modifier = Modifier
.fillMaxWidth()
.clickable { onClick(device) }
.padding(16.dp)
)
}
item {
Text(
text = "Scanned Devices",
fontWeight = FontWeight.Bold,
fontSize = 24.sp,
modifier = Modifier.padding(16.dp)
)
}
items(scannedDevices) { device ->
Text(
text = device.name ?: "(No name)",
modifier = Modifier
.fillMaxWidth()
.clickable { onClick(device) }
.padding(16.dp))
class DeviceActivity : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_style, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Intent(this, StyleFragment::class.java)
.also { styleFragment ->
styleFragment.putExtra(DEVICE_ID, device.name)
startActivity(styleFragment)
}
val conf = findViewById(R.id.tt_cont_button)
conf.setOnClickListener() {
Log.d("test3 DS", "DEVICEID:" + DEVICE_ID)
}
}
}
}
}
}
}
}
package com.example.fragmentintro.presentation.components
import android.annotation.SuppressLint
import android.content.ContentValues.TAG
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material.Button
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.core.content.ContextCompat.startActivity
import androidx.fragment.app.Fragment
import com.example.fragmentintro.StyleFragment
import com.example.fragmentintro.exchange.BluetoothDevice
import com.example.fragmentintro.presentation.BluetoothUiState
import com.example.fragmentintro.presentation.MainActivity
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import com.example.fragmentintro.R
const val DEVICE_ID = "DEVICE_ID"
@Composable
fun DeviceScreen(
state: BluetoothUiState,
onStartScan: () -> Unit,
onStopScan: () -> Unit
) {
Column(
modifier = Modifier
.fillMaxSize()
) {
BluetoothDeviceList(
pairedDevices = state.pairedDevices,
scannedDevices = state.scannedDevices,
onClick = {},
modifier = Modifier
.fillMaxWidth()
.weight(1f)
)
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceAround
) {
Button(onClick = onStartScan) {
Text(text = "Start scan")
}
Button(onClick = onStopScan) {
Text(text = "Stop scan")
}
}
}
}
@Composable
fun BluetoothDeviceList(
pairedDevices: List,
scannedDevices: List,
onClick: (BluetoothDevice) -> Unit,
modifier: Modifier = Modifier
) {
LazyColumn(
modifier = modifier
) {
item {
Text(
text = "Paired Devices",
fontWeight = FontWeight.Bold,
fontSize = 24.sp,
modifier = Modifier.padding(16.dp)
)
}
items(pairedDevices) { device ->
Text(
text = device.name ?: "(No name)",
modifier = Modifier
.fillMaxWidth()
.clickable { onClick(device) }
.padding(16.dp)
)
}
item {
Text(
text = "Scanned Devices",
fontWeight = FontWeight.Bold,
fontSize = 24.sp,
modifier = Modifier.padding(16.dp)
)
}
items(scannedDevices) { device ->
Text(
text = device.name ?: "(No name)",
modifier = Modifier
.fillMaxWidth()
.clickable { onClick(device) }
.padding(16.dp))
class DeviceActivity : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_style, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
class DeviceScreen: AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Intent(this, MainActivity::class.java)
.also { styleFragment ->
styleFragment.putExtra(DEVICE_ID, device.name)
startActivity(styleFragment)
}
val conf = findViewById(R.id.tt_cont_button)
conf.setOnClickListener() {
Log.d("test3 DS", "DEVICEID:" + DEVICE_ID)
}
}
}
}
}
}
}
}
```
Подробнее здесь: https://stackoverflow.com/questions/783 ... erating-nu
Изучение функциональности Intent.PutExtra и Intent.GetExtra, генерирующих Null ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение