簡體   English   中英

更改按鈕文字並在Android Studio中執行相應的onClick功能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM