2014-05-15 104 views
1

我有一個帶有默認文本的EditText。Android onclicklistener在第一次點擊時不起作用

現在,當用戶單擊該EditText時,默認文本應該更改爲某些內容。

我所得到的是:

  • 我的EditText上單擊鼠標自帶的默認文本沒有任何反應
  • 後,當我再次單擊則onClickListener工作

哪有我解決這個問題,它是從第一次完成?

這是我的xml:

    <EditText 
        android:id="@+id/step" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center_vertical" 
        android:layout_marginTop="5dp" 
        android:hint="@string/hnt_message" 
        android:text="Default text" 
        android:maxLength="@integer/max_free_msg_length" 
        android:maxLines="2" 
        /> 

這是我的片斷代碼:

private EditText editMessage; 

    @Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    mContentView = inflater.inflate(R.layout.fragment_step, container, false); 
    ButterKnife.inject(this, mContentView); 


    editMessage = (EditText) mContentView.findViewById(step); 
    editMessage.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      clearEditMessageText(); 
     } 
    }); 
} 

我知道我可以使用butterknife爲這個按鈕,但我做了,但這並沒有奏效。

+0

你想要的用戶在您的EditText中輸入文本?如果不使用TextView。 –

+0

對此有幫助嗎? http://stackoverflow.com/questions/2119072/android-how-to-do-something-after-user-clicks-on-my-edittext – Jimmy

回答

10

將EditText的焦點設置爲false。首先點擊獲得焦點到EditText。

<EditText 
        android:id="@+id/step" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center_vertical" 
        android:layout_marginTop="5dp" 
        android:hint="@string/hnt_message" 
        android:text="Default text" 
        android:maxLength="@integer/max_free_msg_length" 
        android:maxLines="2" 
android:focusable="false" 
        /> 

UPDATE: 好了,你的情況,你可以用onFocusChangeListnere而不是onClickListener做到這一點。

edittext.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
      @Override 
      public void onFocusChange(View view, boolean b) { 
       if (b) { 
        //do something 
       } 
      } 
     }); 
+0

是的,我知道,但然後用戶不能再選擇它後,他們做了那。根據用戶的需要,必須可以更改文本。 – user1007522

+0

@ user1007522查看更新後的答案。我認爲它應該如你所料。 –

+0

@ user1007522如果只想刪除默認文字,可能可以使用提示嗎?當用戶開始輸入時它會被自動刪除。 –

0

在Layout onClick的xml文件中,在您的代碼中選擇適當的函數。

<Button 
     android:layout_width="460dp" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:onClick="onClick_Action_Function" /> 

在實際代碼做到這一點

public void onClick_Action_Function(View view) { 

     //do stuff 
    } 

不這樣做(這將使第一的onClick函數嘗試調用第二的onClick功能)

public void onClick_Action_Function(View view) { 

    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     } 
    }); 
} 
相關問題