Студия Android, как узнать, какой текстовый вид был нажат - PullRequest
0 голосов
/ 29 июня 2018

Я в основном строю небольшое приложение для викторины, и на каждый вопрос есть 4 ответа в 4 разных текстовых представлениях. То, что я хочу знать, - это какой текстовый вид был выбран пользователем.

Ответы [ 4 ]

0 голосов
/ 29 июня 2018

Попробуйте:

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import com.example.dgnc.testproject.R;

public class YourClass extends AppCompatActivity implements View.OnClickListener{
TextView view1,view2;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    view1 = (TextView)findViewById(R.id.text);
    view2 = (TextView)findViewById(R.id.text2);
    view1.setOnClickListener(this);
    view2.setOnClickListener(this);

}

@Override
public void onClick(View v) {
    Toast.makeText(getApplicationContext(),"clicked textView : 
               "+v.getId(),Toast.LENGTH_LONG).show();
    switch (v.getId()){
        case R.id.text : 
            // do somthing
            break;
        case R.id.text2 : 
            //do somthing
            break;
    }

}

}

0 голосов
/ 29 июня 2018

Вы можете присвоить различные идентификаторы вашим TextViews и установить onclickListener следующим образом

 TextView textView=(TextView)findViewById(R.id.textView);
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });

, а затем выполните любое задание, которое вы хотите. Здесь вы можете использовать оператор if else, чтобы потом проверить ответ.

0 голосов
/ 29 июня 2018

Вы можете легко сделать это, применив onClickListeners к textViews, следующий код может помочь:

TextView mTvAnswer1, mTvAnswer2, mTvAnswer3, mTvAnswer4;
mTvAnswer1 = findViewById(R.id.text_1);
// similarly find other textviews

mTvAnswer1.setOnClickListener(this);
mTvAnswer2.setOnClickListener(this);
mTvAnswer3.setOnClickListener(this);
mTvAnswer4.setOnClickListener(this);

И после этого вы можете переопределить onClick () следующим образом:

@Override
public void onClick(View v){
switch (v.getId()){
     case R.id.text1:
         // First option clicked
         break;
     case R.id.text2:
        // Second option clicked
        break;
     case R.id.text3:
         // Third option clicked
         break;
     case R.id.text4:
         // Fourth option clicked
         break;

} }

0 голосов
/ 29 июня 2018

Есть много, много способов сделать это. Самое простое было бы создать метод, который принимает один параметр, тогда каждый TextView OnClickListener будет вызывать этот метод с другим параметром.

private final View.OnClickListener mOnOptionClickListener = 
    new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onOptionClicked(v.getTag());
        }
    });

private void onOptionClicked(final int optionNumber) {
    // take care of it
}

protected void onCreate(...) {
    // after all your textviews are bound... 
    textView1.setTag(1);
    textView2.setTag(2);
    textView3.setTag(3);
    textView4.setTag(4);

    textView1.setOnClickListener(mOnOptionClickListener);
    textView2.setOnClickListener(mOnOptionClickListener);
    textView3.setOnClickListener(mOnOptionClickListener);
    textView4.setOnClickListener(mOnOptionClickListener);
}
...