[英]Change button text and do corresponding onClick function in android studio
我試圖在第一次按下按鈕時動態地更改圖像,並且一旦圖像更改,按鈕文本就應該更改,如果我們這次按下按鈕,它必須打開一個新活動。 但是到目前為止,以下代碼似乎沒有運行,並且第一次單擊按鈕時崩潰了。
@Override
public void onClick(View v) {
final int status = (Integer) v.getTag();
if (status == 1) {
change(v);
btn2.setText(R.string.next);
v.setTag(0);
next(v);
} else
{
btn2.setText(R.string.command);
v.setTag(1);
}
}
public void change(View v) {
btn2.setTag(1);
btn2.setText(R.string.command);
ImageView doggy = findViewById(R.id.imageView);
doggy.setImageResource(R.drawable.dog_sit);
}
public void next(View v){
v.setTag(0);
Intent i = new Intent(this, NumberShapes.class);
startActivity(i);
}
logcat指出的錯誤如下:
07-03 21:44:19.944 31179-31179/com.example.angelinekingsteena.myapplication
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.angelinekingsteena.myapplication, PID: 31179
java.lang.NullPointerException: Attempt to invoke virtual method 'int
java.lang.Integer.intValue()' on a null object reference
at
com.example.angelinekingsteena.myapplication.Doggie.onClick(Doggie.java:37)
at android.view.View.performClick(View.java:5207)
根據logcat錯誤位於下面的行中
final int status = (Integer) v.getTag();
也許可以使用onClick方法上的Switch-Case語句來執行此操作,並使用一個標志來啟動,因此,如果第一次按下該按鈕,則更改圖像,文本並更改標志值,如果再次按下它使用新的標志值,將轉到另一種情況,您可以從那里打開活動。
更改
final int status = (Integer) v.getTag();
至:
final String status = v.getTag().toString;
並使用標簽並將其作為字符串進行比較。
我也希望您在xml中將初始標簽設置為1。
嘗試執行此操作,獲取和設置Button
的標記對我來說似乎不是必需的,II認為僅在Global范圍內創建一個變量即可完成相同的工作,但麻煩較少。
private static int status = 0;
@Override
public void onClick(View v) {
switch (status) {
case 0:
change(v);
btn2.setText(R.string.next);
status = 1;
break;
case 1:
next(v)
break;
} }
請記住:下次在問問題時,請嘗試多解釋一些事情。 您的代碼並沒有真正匹配與你試圖在第一個地方做, 在所有 。
編輯:我在
switch
語句的第case
添加了這一行代碼btn2.setText(R.string.next);
祝您好運, 希望這個答案對您有所幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.