2017-11-18 97 views
0

下面的代碼:ImageView不會改變setImageResource()?

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 

    ImageView button; 



@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    button = (ImageView)findViewById(R.id.startButton); 
    button.setOnClickListener(this); 
    button.setImageResource(R.drawable.play); 
} 
    public void onClick(View v) { 
     button.setImageResource(R.drawable.pause); 
    } 
} 

顯然,如果我把button.setImageResource(R.drawable.pause);在OnCreate它的工作原理,並改變圖像,但不是在onclick?我試着調試它,它運行onClick代碼,但沒有更改按鈕圖像。我可能犯了一個非常愚蠢的錯誤,但我無法弄清楚。

XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context="com.example.larry.app.MainActivity" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 
    <ImageView 
     android:id="@+id/startButton" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:clickable="true" /> 
</LinearLayout> 
+0

向我們展示您的xml請 –

+0

我不認爲它的xml –

+0

我重做你的代碼在一個例子中,它工作正常(setImageResource作品)。你有沒有添加其他的東西? –

回答

0

可要集ImageView的自我OnClickListener

0

請確保您使用

android:src 

設置初始圖像中的XML。

0

難道你試試這個代碼,並告訴我結果,那麼:

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 

     ImageView button; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      button = (ImageView)findViewById(R.id.startButton); 
      button.setOnClickListener(this); 
      button.setImageResource(R.drawable.play); 

     } 
     public void onClick(View v) { 
      button.setImageResource(R.drawable.pause); 
     } 
    } 

,並在XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context="com.example.larry.app.MainActivity" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 
    <ImageView 
     android:id="@+id/startButton" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:clickable="true" /> 
</LinearLayout> 
+0

此代碼工作...但我的項目沒有 –

+0

好。它能解決你的問題嗎? –

+0

我改變了項目代碼來匹配這個項目,我認爲問題可能是xml中的android:src是永久性的,但沒有修復它。 –

0

在onclick有一個switch語句,當我把button.setImageResource(R.drawable.pause);即使在OnClick激活時,它也不會始終激活。當我點擊一個按鈕android.os.SystemClock.sleep被執行,從而防止圖像交換。當按下另一個按鈕時,時鐘不會休眠,因此圖像可以成功切換。