可点击的textView不起作用

时间:2015-04-16 20:08:25

标签: java android textview

我有TextView但是点击它时它不起作用。

My java source code:

 public class MainActivity extends ActionBarActivity {
    public TextView tv1;
    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //Relative layout oluşturduk
        final RelativeLayout rLayout = (RelativeLayout) findViewById(R.id.relativeLayout);
        //Buttonumuzu oluşturduk
        Button btn1 = (Button) findViewById(R.id.btnNotEkle);
        //Alert dialog oluşturdul
        final AlertDialog.Builder build = new AlertDialog.Builder(MainActivity.this);
        //Edit Text oluşturduk
        final EditText dersAdiGir = new  EditText(MainActivity.this);
        final EditText dersSaatiGir = new EditText(MainActivity.this);
        tv1 = new TextView(MainActivity.this);
        dersAdiGir.setHint("Ders Adi Giriniz");
        dersSaatiGir.setHint("Ders Saati Giriniz");
        dersSaatiGir.setInputType(InputType.TYPE_CLASS_NUMBER);
        LinearLayout etLayout = new LinearLayout(MainActivity.this);
        etLayout.setOrientation(LinearLayout.VERTICAL);
        etLayout.addView(dersAdiGir);
        etLayout.addView(dersSaatiGir);
        build.setView(etLayout);
        //Linear layout oluşturduk bu sayede alt alta ders adlarını sıralayacağız
        final LinearLayout layoutDers = (LinearLayout) findViewById(R.id.layoutDers);

        //Alert dialoga button ekledik
        build.setPositiveButton("Tamam", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //Butttona tıkladığında olacaklar

                tv1.setClickable(true);
                String girilenDers = dersAdiGir.getText().toString();//EditText içinden girilen Text'i alacağız.
                int girilenDersSaati = Integer.parseInt(dersSaatiGir.getText().toString());;
                tv1.setText(girilenDers);//
                layoutDers.addView(tv1);//Linearlayout'a dersi ekledik
                dialog.dismiss();//Dialogdan çıktık.

            }
        });

        //Yeni bir dialog oluşturduk. ve buttona tıklandığında dialog penceresi gösterilecek.
        final AlertDialog alertDersAdi = build.create();
        btn1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                alertDersAdi.show();
            }
        });
        tv1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(MainActivity.this, NotEkle.class);
                startActivity(intent);
            }
        });

}
}

当我点击TextView时,它不会触发Intent :(出了什么问题?请帮帮我。谢谢大家。

4 个答案:

答案 0 :(得分:0)

您需要“找到”TextView。

tv1 = (TextView) findViewById(R.id./*id of your textview*/);

要设置ID,请将其添加到xml中的textView:

android:id="@+id/textView"

答案 1 :(得分:0)

要使TextView可单击,请将以下行添加到 xml 文件中的TextView中:

android:clickable="true"

或者在 Java 类中:

textView.setClickable(true);

之后你可以设置onClickListener:

textView.setOnClickListener(new OnClickListener() {

@Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent inte = new Intent(MainActivity.this, NotEkle.class);
            startActivity(inte);
        }
    });

编辑:所以在你的情况下:

Xml如果你有一个:

<TextView
        android:id="@+id/textview1"
        .... />

如果以编程方式添加Java类:

// For example If you're using a LinearLayout
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.mylayoutID)
TextView txt1 = new TextView(MyClass.this);
txt1.setText("hallo hallo");
txt1.setClickable(true);
linearLayout.addView(txt1);

然后是setOnClickListener

txt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent inte = new Intent(MainActivity.this, NotEkle.class);
                startActivity(inte);
            }
        });

答案 2 :(得分:0)

您正在此行的布局中添加文字视图

layoutDers.addView(tv1);

因此,要使点击侦听器起作用,只有在将视图添加到布局后才能将点击侦听器添加到视图中。所以在上面一行之后添加点击监听器。

答案 3 :(得分:0)

你的代码不是很干净......但这是你应该做的:

    final AlertDialog.Builder build = new AlertDialog.Builder(MainActivity.this);
    final TextView tv1 = new TextView(MainActivity.this);
    tv1.setClickable(true);
    //Butttona tıkladığında olacaklar
    String girilenDers = dersAdiGir.getText().toString(); //EditText içinden girilen Text'i alacağız.
    int girilenDersSaati =  Integer.parseInt(dersSaatiGir.getText().toString());
    tv1.setText(girilenDers);//                
    layoutDers.addView(tv1);//Linearlayout'a dersi ekledik

    tv1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent inte = new Intent(MainActivity.this, NotEkle.class);
            startActivity(inte);

        }
    });

    // Set the View here...
    build.setView(layoutDers);
    build.setPositiveButton("Tamam", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();//Dialogdan çıktık.
        }
    });
   final AlertDialog alertDersAdi = build.create();
    btn1.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            alertDersAdi.show();
        }
    });