繁体   English   中英

可点击的textView不起作用

[英]Clickable textView does not work

我有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 :(怎么了?请帮助我。谢谢大家。

您需要“查找” TextView。

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

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

android:id="@+id/textView"

要使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);
            }
        });

您将在此行将文本视图添加到布局中

layoutDers.addView(tv1);

因此,要使点击侦听器正常工作,必须仅在将点击侦听器添加到布局后,才能将其添加到视图中。 因此,请在上述代码行之后添加点击监听器。

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

    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();
        }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM