2016-10-23 125 views
-2

按钮已经在XML的方法:以编程方式更改按钮的onClick方法?

android:onClick="playSound" 

我创建活动中的方法:

public void playSound (View view){ //code1 } 

我想,当我按下按钮,在活动改变onClick到现有的方法,

public void pauseSound(View view){ //code2 } 

,当我再次按下该按钮我想onClick回到原来的方法,

public void playSound (View view){ //code1 } 

提示:我使用的方法相同的方法playSound

+2

只需使用布尔变量作为状态持有者。 –

+1

你可以使用一个变量作为标志并从'playSound'中调用不同的方法。 – Ranveer

+0

我试图使用布尔值之前我发布我的问题,但它不是动态与多个按钮(就像我在我的应用程序中使用) – boody

回答

2

多个按钮定义一个变量(int/bool),把它作为一个标志,并且如需要时和调用的方法。

bool flag = 0; 

public void playSoundHandler (View view){ 
    if (flag) playSound(view); 
    else pauseSound(view); 
} 

playSound (View view) { 
    // Your code 
    flag = 1; 
} 

pauseSound (View view) { 
    // Your code 
    flag = 0; 
} 

and set onClick="playSoundHandler"

编辑


在情况下,由于多个按钮的使用它,你不能修改你的playSound方法,你可以做到以下几点:

bool flag = 0; 

public void playSoundHandler (View view){ 
    if (!flag) { 
     playSound(view); 
     flag = 1; 
    } else { 
     pauseSound(view); 
     flag = 0; 
    } 
} 

playSound (View view) { 
    // Your code 
} 

pauseSound (View view) { 
    // Your code 
} 

,并设置onClick="playSoundHandler"该特定按钮。

+0

我使用多个按钮上相同的方法“playSound” 此解决方案不动态与多个按钮 – boody

+0

@boody如果你想为不同的按钮设置不同的标志,存储一个布尔标志数组。如果你说很多按钮访问你的'playSound()'方法,并且你不想改变它,那么看看最新的编辑。如果没有这些,你可能需要更多地解释你的问题。 – Ranveer

相关问题