2012-04-16 3 views
3

взглянуть на код ниже ... я устанавливаю OnClick слушателя на TextView и ontouch слушателя, но ни один из них не работает ...ontouch и OnClick на TextView не работает

то, что кажется быть проблемой> ....?

AlertDialog.Builder builder; 
    AlertDialog a; 
    TextView text,txtNewUser ; 
    ImageView image; 
    View layout; 
    Button ok; 
    String pswrd; 
    LayoutInflater inflater; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     final Context mContext = this; 
     Dialog dialog = new Dialog(mContext); 
     inflater = (LayoutInflater) mContext 
       .getSystemService(LAYOUT_INFLATER_SERVICE); 
     ok = (Button) findViewById(R.id.buttonOK); 

     dialog.setContentView(R.layout.custom_dialog_private_space); 
     dialog.setTitle("Password"); 
     dialog.setCancelable(true); 
     layout = inflater.inflate(R.layout.custom_dialog_private_space, 
       (ViewGroup) findViewById(R.id.layout)); 
     text = (TextView) dialog.findViewById(R.id.tvDesc); 
     txtNewUser = (TextView) dialog.findViewById(R.id.tvNewUser); 

     image = (ImageView) layout.findViewById(R.id.image); 
     image.setImageResource(R.drawable.lock_symbol_android); 

     builder = new AlertDialog.Builder(mContext); 
     builder.setView(layout); 

     a = builder.create(); 
     a.show(); 

     txtNewUser.setOnTouchListener(new OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       // TODO Auto-generated method stub 
       if(event.getAction() == MotionEvent.ACTION_UP) 
       Toast.makeText(mContext, "Clicked", Toast.LENGTH_SHORT).show(); 
       Log.v("AS", "Clicked"); 
    return true; 

      } 
     }); 

txtNewUser.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     Toast.makeText(mContext, "Clicked", Toast.LENGTH_SHORT).show(); 
     Log.v("AS", "Clicked"); 
    } 
}); 
    } 

здесь код TextView из XML диалогового макете

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:id="@+id/layout" > 

<TextView android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/tvNewUser" 
    android:text="New User?" 
    android:layout_gravity="top|left" 
    android:clickable="true" 

    /> 

    <ImageView 
     android:id="@+id/image" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     /> 

    <TextView 
     android:id="@+id/tvDesc" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:text="Enter password" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     /> 



    <EditText 
     android:id="@+id/etPassword" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:ems="100" 
     android:inputType="textPassword" > 


    </EditText> 

    <Button 
     android:id="@+id/buttonOK" 
     android:layout_width="100dp" 
     android:layout_gravity="center" 
     android:layout_height="fill_parent" 
     android:text="OK" /> 

</LinearLayout> 
+0

вы можете добавить в ваш полный XML? –

+0

Вы использовали пользовательский диалог? если нет, то txtNewUser = (TextView) dialog.findViewById (R.id.tvNewUser); удалить диалог из указанной строки. –

+0

Этот текст является частью некоторого диалога? – Shubhayu

ответ

2
  1. Вместо infalter использование оконного класса
  2. возвращение ложным в сенсорный слушателю
  3. набор вид contenet к вашей основной деятельности

    package com.collabera.labs.sai; 
    
    import android.app.Activity; 
    import android.app.AlertDialog; 
    import android.app.Dialog; 
    import android.content.Context; 
    import android.os.Bundle; 
    import android.util.Log; 
    import android.view.MotionEvent; 
    import android.view.View; 
    import android.view.Window; 
    import android.view.View.OnTouchListener; 
    import android.widget.Button; 
    import android.widget.ImageView; 
    import android.widget.TextView; 
    import android.widget.Toast; 
    
    public class HomePage extends Activity { 
        AlertDialog.Builder builder; 
        AlertDialog a; 
        TextView text, txtNewUser; 
        ImageView image; 
        Button ok; 
        String pswrd; 
    
        public Window mWindow; 
    
        @Override 
        protected void onCreate(Bundle savedInstanceState) { 
         super.onCreate(savedInstanceState); 
         setContentView(R.layout.custom_dialog_private_space); 
         ok = (Button) findViewById(R.id.buttonOK); 
         final Context mContext = this; 
         Dialog dialog = new Dialog(HomePage.this); 
    
         dialog.setContentView(R.layout.custom_dialog_private_space); 
         dialog.setTitle("Password"); 
         dialog.setCancelable(true); 
         dialog.show(); 
         mWindow = dialog.getWindow(); 
         Log.w(" dialog is " + mWindow.toString(), "-------"); 
         text = (TextView) mWindow.findViewById(R.id.tvDesc); 
         txtNewUser = (TextView) mWindow.findViewById(R.id.tvNewUser); 
         image = (ImageView) mWindow.findViewById(R.id.image); 
         image.setImageResource(R.drawable.icon); 
    
         txtNewUser.setOnTouchListener(new OnTouchListener() { 
    
          @Override 
          public boolean onTouch(View v, MotionEvent event) { 
           if (event.getAction() == MotionEvent.ACTION_UP) 
            Toast.makeText(mContext, "Touched", Toast.LENGTH_SHORT) 
              .show(); 
           Log.v("AS", "Touched"); 
           return false; 
    
          } 
         }); 
    
         txtNewUser.setOnClickListener(new View.OnClickListener() { 
    
          @Override 
          public void onClick(View v) { 
           Toast.makeText(mContext, "Clicked", Toast.LENGTH_SHORT).show(); 
           Log.v("AS", "Clicked"); 
          } 
         }); 
        } 
    } 
    
+0

, ни изображение не отображается, ни кнопка ok, а плюс переднего плана диалогового окна то же, что и фон из-за setContentView, тот же самый – kashifmehmood

+0

поэтому вы можете настроить просмотр содержимого, как вы хотите просто добавить еще один xml-файл. – sravan

+0

как насчет кнопки, изображения и текста редактирования ... ????????? – kashifmehmood

1

я думаю .. вы также должны вернуть

return super.onTouchEvent(event); 

из функции onTouch .. вместо true, потому что true означает, что событие потребляется прикосновением, и другие действия не вызываются для этого события .. в этом случае onClick

+0

метод onTouchEvent не определен для объекта типа – kashifmehmood

+0

все еще ничего .... :( – kashifmehmood

+0

ничего не значит .. ни один из них не называется? – 5hssba

0

В тоста обоих случаях вы написали щелкнул так изменить, чтобы коснуться в onTouch слушателя и вернуться ложным onTouch СЛУШАТЕЛЬ:

public class HomePage extends Activity { 
    private TextView txtNewUser; 
    private Context mContext; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     mContext = getApplicationContext(); 
     txtNewUser = (TextView) findViewById(R.id.tvNewUser); 

     txtNewUser.setOnTouchListener(new OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       // TODO Auto-generated method stub 
       if (event.getAction() == MotionEvent.ACTION_UP) 
        Toast.makeText(mContext, "Touched ", Toast.LENGTH_SHORT) 
          .show(); 
       Log.v("AS", "Touched"); 
       return false; 

      } 
     }); 

     txtNewUser.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Toast.makeText(mContext, "Clicked", Toast.LENGTH_SHORT).show(); 
       Log.v("AS", "Clicked"); 
      } 
     }); 

    } 
+0

его просто сообщение и не имеет значения, но ни один из тостов не выполнен – kashifmehmood

+0

привет, попробуйте этот код, только сейчас я попробовал, если захочу, я тоже отправлю свой код. – sravan

+0

это не просто текстовое представление. Textview находится в настраиваемом диалоге, который я создаю ... c этим ... txtNewUser = (TextView) dialog.findViewById (R.id.tvNewUser); – kashifmehmood

0

это путь я использовал, чтобы сделать ImageView кликабельным:

public class Main extends Activity **implements OnClickListener** { 

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


    ImageView profile_btn=(ImageView) findViewById(R.id.x_Btn); 
    x_btn.setOnClickListener(this) ; 


    ImageView food_btn=(ImageView) findViewById(R.id.y_Btn); 

    ybtn.setOnClickListener(this); 
    } 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
     switch(v.getId()) 
    { 
    case R.id.x_Btn: 
      //do some thing;break; 
        case R.id.y_Btn: 
    //do some thing;break; 
        } 
    } 
} 
+0

я не использую изображение ... я использую текстовое представление, присутствующее в диалоговом окне – kashifmehmood

Смежные вопросы