Tengo dos un adaptador y otra actividad. El adaptador envía el String Extra según la posición en la Estructura de datos de Firebase a la siguiente actividad donde se muestran los datos que se pasan del adaptador. Funciona bastante bien No puedo mostrar los datos en Textview. Pero cuando el usuario intenta marcar un teléfono o enviar un correo electrónico, entonces no puedo usar Extras con los que estoy recibiendo, pero cuando configuro el texto en Textview ... muestran los datos exactos. Ayuda

Aquí está el método en Adaptador

@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {

        database = FirebaseDatabase.getInstance();
        dbreference = database.getReference("gender");

        g = bookslist.get(position);
 holder.teacher_quali.setText(g.getBqualifications());

        holder.profile_details.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent intent = new Intent(v.getContext(), gender_details.class);

                intent.putExtra(NEAR_LOCATION, g.getBlocation());
                intent.putExtra(AVAILAIBILITY, g.getBavailaile());

                intent.putExtra(MOBILE, g.getSellermobile());
                intent.putExtra(EMAIL, g.getSelleremail());


                v.getContext().startActivity(intent);
            }
});

Donde he definido MOBILE y EMAIL como

public static final String MOBILE = "other_mobile";
public static final String EMAIL= "other_email";

En la misma vista del adaptador y mi actividad es

public class gender_details extends AppCompatActivity {

    private TextView tutor_email,tutor_mobile;
    private ImageView img;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.profile_details);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_details); // get the reference of Toolbar
        toolbar.setTitle(getIntent().getStringExtra(KEY_NAME));
        toolbar.setLogo(R.drawable.ic_person_black_24dp);
        setSupportActionBar(toolbar);




        String tutor_email_txt = "";
        String tutor_mobile_txt = "";


        tutor_email_txt = intent.getStringExtra(EMAIL);
        tutor_mobile_txt = intent.getStringExtra(MOBILE);
        // Setting values

        TextView Email_Txt = (TextView) findViewById(R.id.tutor_email);
        Email_Txt.setText(tutor_email_txt);

         TextView Contact_Txt = (TextView) findViewById(R.id.tutor_contact);
        Contact_Txt.setText(String tutor_mobile_txt);
    }
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.toolbar_menu, menu);
            return true;
        }
// Activity's overrided method used to perform click events on menu items
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
//noinspection SimplifiableIfStatement
// Display menu item's title by using a Toast.
            if (id == R.id.action_call) {


                Intent intent = new Intent(Intent.ACTION_DIAL);
                intent.setData(Uri.parse("tel:"+tutor_mobile_txt));
                startActivity(intent);


                return true;
            } else if (id == R.id.action_email) {

                Intent intent = new Intent(Intent.ACTION_SEND);
                intent.setType("plain/text");
                intent.putExtra(Intent.EXTRA_EMAIL, tutor_email_txt);
                intent.putExtra(Intent.EXTRA_SUBJECT, "subject");
                intent.putExtra(Intent.EXTRA_TEXT, "mail body");
                startActivity(Intent.createChooser(intent, ""));

                return true;
            }
            return super.onOptionsItemSelected(item);
        }
    @Override
    public void onBackPressed() {
        Intent intent = new Intent(gender_details.this, MainActivity.class);
        startActivity(intent);
    }
}

Como puede ver en Textview, la información se muestra correctamente, pero cuando uso para llamar a la acción intencional o enviar un correo electrónico ... no he podido hacerlo.

Por favor, ayuda

1
Bir Nepali 17 sep. 2018 a las 12:13

3 respuestas

La mejor respuesta

Pruebe esto:

Declarar la variable globalmente

public class gender_details extends AppCompatActivity {

    private TextView tutor_email,tutor_mobile;
    private ImageView img;
     String tutor_email_txt;
        String tutor_mobile_txt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.profile_details);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_details); // get the reference of Toolbar
        toolbar.setTitle(getIntent().getStringExtra(KEY_NAME));
        toolbar.setLogo(R.drawable.ic_person_black_24dp);
        setSupportActionBar(toolbar);




       


        tutor_email_txt = intent.getStringExtra(EMAIL);
        tutor_mobilee_txt = intent.getStringExtra(MOBILE);
        // Setting values

        TextView Email_Txt = (TextView) findViewById(R.id.tutor_email);
        Email_Txt.setText(tutor_email_txt);

         TextView Contact_Txt = (TextView) findViewById(R.id.tutor_contact);
        Contact_Txt.setText(String tutor_mobile_txt);
    }
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.toolbar_menu, menu);
            return true;
        }
// Activity's overrided method used to perform click events on menu items
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
//noinspection SimplifiableIfStatement
// Display menu item's title by using a Toast.
            if (id == R.id.action_call) {


                Intent intent = new Intent(Intent.ACTION_DIAL);
                intent.setData(Uri.parse("tel:"+tutor_mobile_txt));
                startActivity(intent);


                return true;
            } else if (id == R.id.action_email) {

                Intent intent = new Intent(Intent.ACTION_SEND);
                intent.setType("plain/text");
                intent.putExtra(Intent.EXTRA_EMAIL, tutor_email_txt);
                intent.putExtra(Intent.EXTRA_SUBJECT, "subject");
                intent.putExtra(Intent.EXTRA_TEXT, "mail body");
                startActivity(Intent.createChooser(intent, ""));

                return true;
            }
            return super.onOptionsItemSelected(item);
        }
    @Override
    public void onBackPressed() {
        Intent intent = new Intent(gender_details.this, MainActivity.class);
        startActivity(intent);
    }
}
3
Faiz Mir 17 sep. 2018 a las 09:24

Hay algunos problemas serios de nombres en su código. Primero debes hacer que tu tutor_mobile_txt sea variable global. En segundo lugar, en onCreate está inicializando tutor_mobilee_txt en lugar de tutor_mobile_txt. Corrija la ortografía y luego verifique.

0
AIK 17 sep. 2018 a las 09:22

¿Está declarando permiso en manifiesto si no es así? Declare:

Usa-permiso android: name = "android.permission.CALL_PHONE"

0
Pravin 17 sep. 2018 a las 09:20