web-dev-qa-db-ja.com

TextView onClick()が機能しない

ここにmain.xmlのコードがあります

 <merge xmlns:Android="http://schemas.Android.com/apk/res/Android">
 <RelativeLayout 
    Android:id="@id/container" 
    Android:layout_width="fill_parent" 
    Android:layout_height="fill_parent"
    xmlns:Android="http://schemas.Android.com/apk/res/Android">


<include layout="@layout/tabs" />

<ScrollView
    Android:fillViewport="true" 
    Android:scrollbars="@null"
    Android:layout_height="fill_parent"
    Android:layout_width="fill_parent">

    <LinearLayout 
        Android:paddingTop="10dp"
        Android:layout_width="fill_parent" 
        Android:layout_height="wrap_content"
        Android:orientation="vertical" >

        <!-- first text_view -->
        <TextView 
            Android:background="@color/grey"
            Android:textColor="@color/white"
            Android:text="@string/category" 
            Android:id="@+id/category1" 
            Android:layout_height="wrap_content" 
            Android:layout_width="fill_parent"
            Android:layout_marginTop="65dp" 
            Android:textSize="17dp"
            Android:typeface="serif"/>

        <!-- first horizontal_scrollview -->
        <HorizontalScrollView 
            Android:scrollbars="@null"
            Android:id="@+id/horizontalScrollView1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content">

            <LinearLayout Android:id="@+id/linearLayout1"
                Android:orientation="horizontal" 
                Android:visibility="visible"
                Android:layout_height="wrap_content"
                Android:layout_width="wrap_content">

                <!-- image_view should be here -->

            </LinearLayout>
        </HorizontalScrollView>
    </LinearLayout>
</ScrollView>
</RelativeLayout>
</merge>

ここにtabs.xmlの私のコードがあります

<?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:orientation="horizontal" 
Android:background="#333333">

<TextView
    Android:textColor="@color/gradient_green"
    Android:id="@+id/viewall"
        Android:layout_width="85dp"
        Android:layout_height="25dp"
        Android:layout_marginLeft="10dp"
        Android:layout_alignParentLeft="true"
        Android:layout_alignParentTop="true"
        Android:textSize="17dp"
        Android:textStyle="bold" 
        Android:text="@string/view_all"
        Android:onClick="onClick"
        Android:focusable="false"
        Android:clickable="true" />

    <TextView
        Android:textColor="@color/white"
        Android:id="@+id/pic"
        Android:layout_width="45dp"
        Android:layout_height="25dp"
        Android:layout_alignParentTop="true"
        Android:layout_toRightOf="@+id/viewall"
        Android:textSize="17dp"
        Android:textStyle="bold" 
        Android:text="@string/pic"
        Android:onClick="onClick"
        Android:focusable="false"
        Android:clickable="true" />
</RelativeLayout>

main.Java内のコードは次のとおりです。

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    TextView all = (TextView) this.findViewById(R.id.viewall);
    TextView pic = (TextView) this.findViewById(R.id.pic);

    all.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            TextView all = (TextView) findViewById(R.id.viewall);
            TextView pic = (TextView) findViewById(R.id.pic);

            Toast.makeText(Main.this, "VIEW ALL", Toast.LENGTH_SHORT).show();

            all.setTextColor(getResources().getColorStateList(R.color.gradient_green));
            pic.setTextColor(getResources().getColorStateList(R.color.white));
        }
    });

    pdf.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            TextView all = (TextView) findViewById(R.id.viewall);
            TextView pic = (TextView) findViewById(R.id.pic);

            Toast.makeText(Main.this, "VIEW ALL", Toast.LENGTH_SHORT).show();

            all.setTextColor(getResources().getColorStateList(R.color.white));
            pic.setTextColor(getResources().getColorStateList(R.color.gradient_green));
        }
    });

  }

したがって、Main.classまたはMain.JavaのsetContentView()をsetContentView(R.layout.main)ではなくsetContentView(R.layout.tabs)として設定すると、onClick()が機能します。 onClick()が動作しないのを妨げる私のコードで間違っていますか?

33
agony

これらを使用

 all = (TextView) this.findViewById(R.id.viewall);
 pdf = (TextView) this.findViewById(R.id.pic);

作成してから設定する

oncreate()メソッドのall.setOnclickListener(this)もエラーを表示する場合にonClicklistenerを実装します。それは魅力のように機能します。

編集済み

TextView btn=(TextView) findViewById(R.id.accInfo);
btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            //DO you work here
        }
    });

ClicklistennerをTextViewに設定すると、自動的にクリック可能になるため、必要ありません

Android:clickable="true"
39
Tofeeq Ahmad

簡単な方法があります。これをXMLのTextViewに追加します。

Android:clickable="true"
114
Fernando JS

Android:clickable="true"<TextView>を追加します

7
spr

OnCreateメソッドでは、次のことを行う必要があります。

  1. TextViewsの変数を作成します
  2. それらにonClickListenerを割り当てる

また、クラスはOnClickListenerを実装する必要もあります。

public class SqliteTestsActivity extends Activity implements OnClickListener {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView all = (TextView) R.findViewById(R.id.viewall);
        all.setOnClickListener(this);
    }

    public void onClick(View v) {
        // Fill in this with your switch statement
    }
}
0
jpalm