2016-04-28 768 views
-1

我希望我的btnAppShare按鈕被點擊,即使按鈕是不可見的,我已經wriiten此代碼後按鈕1點擊偵聽器是可見的基本上,我希望完全執行button1的setOnClickListener事件後,我的button2會自動被點擊並執行它的setOnClickListener。Button.PerformClick()不會觸發點擊事件,如果該按鈕不可見在android

btnAppShare = (Button) findViewById(R.id.btnAppShare); 
    btnAppShare.setVisibility(View.INVISIBLE); 
    btnAppShare.performClick(); 
    btnAppShare.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 

      if (TextUtils.isEmpty(regId)) { 
       Toast.makeText(getApplicationContext(), "RegId is empty!", 
         Toast.LENGTH_LONG).show(); 
      } else { 
       Intent i = new Intent(getApplicationContext(), 
         MainActivity.class); 
       i.putExtra("regId", regId); 

       startActivity(i); 
       finish(); 

      } 
     } 
    }); 
+1

而且它是'按鈕#performClick()正確的行爲' – 3mpty

+0

@ 3mpty那麼有沒有任何變通執行隱形按鈕的setOnClickListener – SwagDevelopers

+3

把裏面的東西'的onClick()'的另一種方法,並調用該方法從'onClick()',以及任何你想要調用'performClick()'的地方。 –

回答

0

你不能點擊的東西,是不可見的,但你可以做的是使該按鈕的背景透明,這個屬性在XML

android:background="@android:color/transparent" 

這樣按鈕將不可見,但點擊。

希望它可以幫助

+0

只是想指出,你也必須改變文字顏色。這似乎是凌亂的,因爲用戶仍然可以點擊按鈕,而他想要的東西似乎是一個按鈕的功能X,而另一個功能Y然後X –

+0

@jace你有一點,但我沒有掩蓋它,因爲如果他設置該按鈕已經不可見,那麼它意味着按鈕沒有得到用戶閱讀的文本,用戶已經不是從按鈕讀取任何東西,所以按鈕不應該有任何文字 – Max

5

使用View#callOnClick()

Button b = (Button)findViewById(R.id.button); 
//set here listener 
b.callOnClick(); 

不像performClick()它直接調用onClickListener方法,不用查看相關的東西。 Button在調用點擊動作之前必須擁有監聽器!

+0

..謝謝很多..它的工作:) – SwagDevelopers

1

製作方法並在設置按鈕不可見之後調用,然後在偵聽器的onClick方法內調用相同的方法。

btnAppShare = (Button) findViewById(R.id.btnAppShare); 
btnAppShare.setVisibility(View.INVISIBLE); 
myMethod(); 
btnAppShare.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View arg0) 
     myMethod(); 
    } 
}); 

public void myMethod() 
{ 
    if (TextUtils.isEmpty(regId)) { 
     Toast.makeText(getApplicationContext(), "RegId is empty!", 
       Toast.LENGTH_LONG).show(); 
    } else { 
     Intent i = new Intent(getApplicationContext(), 
       MainActivity.class); 
     i.putExtra("regId", regId); 

     startActivity(i); 
     finish(); 
    } 
} 
相關問題