【发布时间】:2020-09-23 12:38:43
【问题描述】:
我有一个以 2 个单选按钮开头的应用程序。
当我单击其中一个时,我可以在当前文件中恢复其文本值。但是当我尝试在另一个文件中访问这个值时,即使我点击另一个按钮,它也不会改变!
MainActivity.kt
class MainActivity : AppCompatActivity() {
public var rbt= "French"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.layout_activity_main)
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
val assistantFragment = AimyboxAssistantFragment()
supportFragmentManager.beginTransaction().apply {
replace(R.id.assistant_container, assistantFragment)
commit()
}
}
// Get the selected radio button text using radio button on click listener
fun radio_button_click(view: View){
// Get the clicked radio button instance
val radio: RadioButton = findViewById(radio_group.checkedRadioButtonId)
rbt=radio.text.toString()
Toast.makeText(applicationContext,"On click : ${rbt}",
Toast.LENGTH_SHORT).show()
}
override fun onBackPressed() {
val assistantFragment = (supportFragmentManager.findFragmentById(R.id.assistant_container)
as? AimyboxAssistantFragment)
if (assistantFragment?.onBackPressed() != true) super.onBackPressed()
}
}
我想要访问单选按钮文本值的另一个文件 (AimyboxApplication.kt):
class AimyboxApplication : Application(), AimyboxProvider {
companion object {
private const val AIMYBOX_API_KEY = ""
}
override val aimybox by lazy { createAimybox(this) }
private fun createAimybox(context: Context): Aimybox {
val unitId = UUID.randomUUID().toString()
val textToSpeech = GooglePlatformTextToSpeech(context, Locale.getDefault())
val speechToText = GooglePlatformSpeechToText(context, Locale.getDefault())
//speechToText.toString()
var rbt = MainActivity().rbt
if (rbt=="English"){
println("English")
}
if (rbt=="French"){
println("French")
}
// Do something
}
}
layout_activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="200dp"
android:layout_gravity="center"
android:layout_marginBottom="100dp"
android:src="@mipmap/logo"/>
<RadioGroup
android:id="@+id/radio_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="100dp"
android:checkedButton="@+id/fr">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="100dp"
android:padding="18dp"
android:text="@string/prompt"
android:textSize="22sp" />
<RadioButton
android:id="@+id/en"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="English"
android:onClick="radio_button_click"/>
<RadioButton
android:id="@+id/fr"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="French"
android:onClick="radio_button_click"/>
</RadioGroup>
<FrameLayout
android:id="@+id/assistant_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
当我启动应用程序时,即使我点击了英文单选按钮,它总是打印我“法语”!
谢谢。
【问题讨论】:
-
您在粘贴的代码中留下了 API 密钥,以防万一出现问题
标签: android android-studio android-layout kotlin android-fragments