Mientras se muestra el valor en un textview en la segunda actividad, aparece un error como

declaración de miembro que espera

Este es mi código para otra actividad:

   package com.example.trial.sudoku_solver
import android.app.AlertDialog
import android.content.Intent
import android.graphics.Bitmap
import android.media.MediaScannerConnection
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.os.Environment
import android.provider.MediaStore
import android.text.Editable
import android.util.Log
import android.view.View
import android.widget.*
import com.example.trial.sudoku_solver.R
import kotlinx.android.synthetic.main.activity_main.view.*
import java.io.ByteArrayOutputStream
import java.io.File
import java.io.FileOutputStream
import java.io.IOException
import java.util.*
import kotlinx.android.synthetic.main.activity_main.*
import org.w3c.dom.Text

class AnotherActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_another)
    }


    var a: String = intent.getStringExtra("text")
    val text1: TextView = findViewById(R.id.textview) as TextView
    text1.text = intent.getStringExtra("text")

}

Este es mi código parcial para la función en MainActivity

private fun clickText() {
    val text1: EditText = findViewById(R.id.editText)
    if (text1 != null) {
        //Toast.makeText(this, text1.text, Toast.LENGTH_LONG).show()
        var text1 = text1.editText.toString()
        val intent = Intent(this, AnotherActivity::class.java)
        intent.putExtra("text",text1)
        startActivity(intent);
    }
}
1
Bala Kumar 8 sep. 2018 a las 09:06

4 respuestas

La mejor respuesta

8Debe llamar a intent, findViewById y luego setText después de la llamada a setContentView:

class AnotherActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_another)

        var a: String = intent.getStringExtra("text")
        val text1: TextView = findViewById(R.id.textview) as TextView
        text1.text = intent.getStringExtra("text")
    }
}
0
lelloman 8 sep. 2018 a las 15:05

Debe agregar este fragmento de código dentro del bloque de método onCreate

Debe agregar sus declaraciones ejecutables dentro de los métodos.

Entonces el código se verá así:

 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_another)

        // add these statement inside onCreate block
        var a: String = intent.getStringExtra("text")
        val text1: TextView = findViewById(R.id.textview) as TextView
        text1.text = intent.getStringExtra("text")
    }
0
Suraj Vaishnav 8 sep. 2018 a las 16:26

No hay un método settext en un Activity. Debería establecer la cadena de texto en TextView así:

var a: String = intent.getStringExtra("text")
val text1 = findViewById(R.id.textview) as TextView
text1.text = a

Además, cuando escribe código en kotlin, no es necesario usar findViewById en las actividades. Debido a las propiedades sintéticas, se puede acceder a las vistas a través de sus identificadores desde el archivo xml. Entonces, sus tres líneas de código podrían reemplazarse de la siguiente manera:

textview.text = intent.getStringExtra("text")

También cambie el bloque de código en MainActivity a:

private fun clickText() {
    val editText1: EditText = findViewById(R.id.editText)
    if (editText1 != null) {
        //Toast.makeText(this, text1.text, Toast.LENGTH_LONG).show()
        var text1 = editText1.text.toString()
        val intent = Intent(this, AnotherActivity::class.java)
        intent.putExtra("text", text1)
        startActivity(intent);
    }
}
0
aminography 8 sep. 2018 a las 18:19

La forma más fácil de hacer esto:

Intent intent = new Intent(getBaseContext(), Activity2.class);
intent.putExtra("ID", sId);
startActivity(intent);

Acceda a esa intención en la próxima actividad

String sId= getIntent().getStringExtra("ID");

Espero que esto te ayudará

0
Vishal Sharma 8 sep. 2018 a las 07:03