Nano Hash - криптовалюты, майнинг, программирование

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

  }

поэтому, если я установлю setContentView() в Main.class или Main.java как setContentView(R.layout.tabs) вместо setContentView(R.layout.main), onClick() работает, что мне делать или что не так с моим кодом, который мешает onClick() не работать?


  • я думаю, что эти два утверждения должны быть где-то еще в методах oncreate или onstart all = (TextView) this.findViewById(R.id.viewall); pdf = (TextView) this.findViewById(R.id.pic); как и все = (TextView)findViewById(R.id.viewall); pdf = (TextView)findViewById(R.id.pic); 31.01.2012
  • я пытаюсь отобразить вкладки, такие как приложение Pulse News, и придумал эту идею, но не могу заставить ее работать 01.02.2012
  • теперь у меня все работает, спасибо за ваши ответы, ребята, я придерживался своего первого почтового индекса... 01.02.2012

Ответы:


1

Используйте эти

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

при создании, а затем установить

all.setOnclickListener(this) и в методе oncreate(). Реализуйте 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"
31.01.2012
  • В дополнение к тому, что вы упомянули выше, мне пришлось вызвать btn.setFocusableInTouchMode(false);, чтобы учесть тот факт, что TextView потребует двойного нажатия для фактического запуска события OnClick. Я не знаю, что могло измениться за последние два года, но это, кажется, требуется в 4.4.2. 12.03.2014
  • Я получаю: The method setOnClickListener(View.OnClickListener) in the type View is not applicable for the arguments (new OnClickListener(){}) 10.05.2014
  • Посмотрите на свой импорт, вы должны импортировать android.view.View.OnClickListener;. Я думаю, вы импортируете клик для прослушивателя диалога 12.05.2014
  • спасибо, просто добавление android clickable =true в файл xml работает как шарм! 07.09.2015

  • 2

    Есть простой способ. Поместите это в TextView в XML:

    android:clickable="true"
    
    31.10.2012
  • Вау... не знал, что TextViews по умолчанию не кликабельны. Рад, что наткнулся на ваш ответ. Думал, что схожу с ума там на мгновение. 22.11.2012
  • @Fernando JS, можете ли вы поддержать подробности по той причине, почему нужно установить android: clickable = true? 08.08.2014
  • Нет. У меня не работает SDK 21. Ответ Самира сработал нормально. 24.10.2014
  • БОСС! Отлично работал на Android 4.2.1. TextView по умолчанию не должен быть кликабельным, что имеет смысл. Но я думаю, что более поздние версии автоматически устанавливают clickable на true, когда вы устанавливаете значение onClick. 18.03.2018

  • 3

    добавить android:clickable="true" в <TextView>

    19.12.2012

    4

    В вашем методе 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
        }
    }
    
    01.02.2012
  • Кроме того, есть ли другой способ сделать это без реализации OnClickListener в классе, потому что я уже реализую другой класс 01.02.2012
  • Во-первых, вы не можете реализовать класс, вы можете реализовать только интерфейс. И нет ограничений на числовой интерфейс для реализации. Так что не волнуйтесь, реализуйте еще один интерфейс, который onclickListener 01.02.2012

  • 5

    пожалуйста, внесите изменения следующим образом:

     <include  android:id = "@+id/lyttab" layout="@layout/tabs" />
    

    в вашем классе Java

     public void onClick(View v){   
    
      View view = findViewById(R.id.lyttab);
    
     all = (TextView) view.findViewById(R.id.viewall);
     pif = (TextView) view.findViewById(R.id.pic);
    
    
    switch (v){
    
    case  all :
        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));
    
        break;
    
    case pic:
        Toast.makeText(Main.this, "PDF", Toast.LENGTH_SHORT).show();
    
        all.setTextColor(getResources().getColorStateList(R.color.white));
        pic.setTextColor(getResources().getColorStateList(R.color.gradient_green));
        break;
    
     }
     }
    

    я думаю это тебе поможет

    31.01.2012
  • вы можете установить только целочисленное значение в случае переключения, а не TextView напрямую @ramesh.Use all.getID() вместо All 02.02.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..