这是布局:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="2dp"
android:layout_marginEnd="4dp"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<Button
android:id="@+id/btn_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Generate QR"
android:textAllCaps="false" />
</LinearLayout>
<RelativeLayout
android:id="@+id/relativeLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="2dp"
android:layout_marginEnd="4dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout">
<EditText
android:id="@+id/input_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="text"
android:hint="Enter text here"
android:visibility="gone"
/>
</RelativeLayout>
<Button
android:id="@+id/btn_generateQR"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Generate QR code"
android:textAllCaps="false"
android:visibility="gone"/>
<ImageView
android:id="@+id/imageView_qrCode"
android:layout_gravity="center"
android:layout_width="250dp"
android:layout_height="250dp"
android:layout_marginBottom="2dp"
android:layout_marginTop="2dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/relativeLayout"
/>
<Button
android:id="@+id/btn_save"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="Save to gallery"
android:textAllCaps="false"
android:layout_gravity="center"
android:visibility="gone"/>
</LinearLayout>
</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>
这是激活:
class MainActivity : AppCompatActivity(), View.OnClickListener {
private var qrImage : Bitmap? = null
val EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE = 1
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btn_text.setOnClickListener(this)
btn_save.setOnClickListener(this)
btn_generateQR.setOnClickListener(this)
if (!checkPermissionForExternalStorage()) {
requestPermissionForExternalStorage()
}
}
override fun onClick(v: View?) {
when(v?.id)
{
R.id.btn_text->
{
generateQRCode()
}
}
}
fun generateQRCode()
{
val newUUID = UUID.randomUUID()
qrImage = net.glxn.qrgen.android.QRCode.from(newUUID.toString()).bitmap()
if(qrImage != null) {
var reqParam = URLEncoder.encode("qr", "UTF-8") + "=" + URLEncoder.encode(newUUID.toString(), "UTF-8") + "&"
var session = URLEncoder.encode("session", "UTF-8") + "=" + URLEncoder.encode(Data.responseBody, "UTF-8")
AsyncRequest().execute("/addHash", reqParam, session)
imageView_qrCode.setImageBitmap(qrImage)
btn_save.visibility = View.VISIBLE
}
}
private fun requestPermissionForExternalStorage() {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
Toast.makeText(this, "External Storage permission needed. Please allow in App Settings for additional functionality.", Toast.LENGTH_LONG).show()
} else {
ActivityCompat.requestPermissions(this, arrayOf<String>(Manifest.permission.WRITE_EXTERNAL_STORAGE), EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE)
}
}
private fun checkPermissionForExternalStorage(): Boolean {
val result = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
return result == PackageManager.PERMISSION_GRANTED
}
}
就行了错误:tools:context=".MainActivity 按照建议创建文件的时候,MainActivity.java被创建了,告诉我设置里面需要改什么
您可以安全地删除第一行,几乎不需要它。它仅用于一些纯 IDE 的东西。
其次,问题很可能出在您的活动所在的包中。例如,尝试指定完整的类名,包括点之前的整个包和类名