【发布时间】:2020-03-12 15:45:51
【问题描述】:
我对 Kotlin 中的一个项目有疑问。我需要修改片段中的文本视图,但我无法访问那些文本视图。 我收到的错误是:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.example/com.example.example.MainActivity}: java.lang.IllegalStateException: emailSettingsText must not be null
在我的 MainActivity(片段所在的位置)中,我尝试了这个:
emailSettingsText.text = sharedPreferences.getString("EMAIL", "")
我还尝试在我的主要活动中创建一个 var:
var = emailVar = sharedPreferences.getString("EMAIL", "")
但我无法更改片段中的文本。
这是片段:
package com.example.example.ui.settings
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProviders
import com.example.example.R
import kotlinx.android.synthetic.main.activity_terms.*
import kotlinx.android.synthetic.main.fragment_settings.*
@Suppress("DEPRECATION")
class SettingsFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
ViewModelProviders.of(this).get(SettingsViewModel::class.java)
return inflater.inflate(R.layout.fragment_settings, container, false)
}
}
有什么方法可以更改片段中名为 emailShowSettingsText 的 textView 吗? 谢谢你的帮助。
这是我的活动代码:
package com.example.example
import android.content.Context
import android.content.SharedPreferences
import android.os.Bundle
import android.provider.Settings
import android.util.Log
import android.widget.TextView
import com.google.android.material.bottomnavigation.BottomNavigationView
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.FragmentTransaction
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.setupWithNavController
import com.example.example.ui.settings.SettingsFragment
import kotlinx.android.synthetic.main.fragment_settings.*
import kotlinx.android.synthetic.main.fragment_settings.view.*
import kotlinx.android.synthetic.main.fragment_traffic.*
class MainActivity : AppCompatActivity(), Communicator {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val navView: BottomNavigationView = findViewById(R.id.nav_view)
val sharedPreferences = getSharedPreferences("TOKEN_FILE", Context.MODE_PRIVATE)
val navController = findNavController(R.id.nav_host_fragment)
var dominioVal = sharedPreferences.getString("DOMINIO", "")
AppBarConfiguration(
setOf(
R.id.navigation_traffic, R.id.navigation_ipblocked, R.id.navigation_search_terms, R.id.navigation_settings
)
)
navView.setupWithNavController(navController)
}
}
【问题讨论】:
-
您可以发布您的活动代码吗?
-
感谢您的回复!我也添加了我的活动代码。
标签: android android-fragments kotlin android-activity fragment