Kotlin. Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference
У меня есть layout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="@dimen/padding_medium">
<Button
android:id="@+id/btnScan"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/padding_high"
android:text="@string/scan_qr_code">
</Button>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/padding_default"
android:text="@string/name" />
<TextView
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/padding_default"
android:text="@string/empty"
android:textStyle="bold|italic" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/padding_default"
android:text="@string/site_name" />
<TextView
android:id="@+id/site_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/padding_default"
android:text="@string/empty"
android:textStyle="bold|italic" />
<Button
android:id="@+id/showQRScanner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/padding_highest"
android:text="@string/show_scanner_from_fragment" />
</LinearLayout>
И ativity для него:
class UserAccount : AppCompatActivity() {
internal var txtName: TextView? = findViewById(R.id.name)
internal var txtSiteName: TextView? = findViewById(R.id.site_name)
internal var btnScan: Button? = findViewById(R.id.btnScan)
internal var qrScanIntegrator: IntentIntegrator? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
txtName = findViewById(R.id.name)
txtSiteName = findViewById(R.id.site_name)
btnScan = findViewById(R.id.btnScan)
btnScan!!.setOnClickListener { performAction() }
qrScanIntegrator = IntentIntegrator(this)
val button = findViewById<Button>(R.id.showQRScanner)
button?.setOnClickListener {
// Add code to show QR Scanner Code in Fragment.
}
}
private fun performAction() {
qrScanIntegrator?.initiateScan()
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
val result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data)
if (result != null) {
if (result.contents == null) {
Toast.makeText(this, getString(R.string.result_not_found), Toast.LENGTH_LONG).show()
} else {
try {
val obj = JSONObject(result.contents)
txtName?.text = obj.getString("name")
txtSiteName?.text = obj.getString("site_name")
} catch (e: JSONException) {
e.printStackTrace()
// Data not in the expected format. So, whole object as toast message.
Toast.makeText(this, result.contents, Toast.LENGTH_LONG).show()
}
}
} else {
super.onActivityResult(requestCode, resultCode, data)
}
}
}
При попытке перейти на данное окно вылетает ошибка:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference
На строке : internal var txtName: TextView? = findViewById(R.id.name)
Хотя id определен и код его видит. Подскажите,в чем может быть ошибка ?