2016-09-14 101 views
1

我想改變使用按鈕點擊imageview的背景。點擊每個按鈕都需要旋轉背景。Android更改Imageview與按鈕點擊

問題:我的應用程序代碼編譯正常,但單擊按鈕時崩潰。此外,日誌顯示了我們創建它的實例的imageview點。

我怎樣才能在代碼中找出問題,並

這裏是我的activity.xml代碼。

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.devnami.maya.maya.MainActivity" 
> <ImageView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/forest" 
    android:adjustViewBounds="true" 
    android:scaleType="fitXY" 
    android:id="@+id/view1" 
    /> <ImageButton 
     android:id="@+id/button1" 
     android:layout_width="45dp" 
     android:layout_height="45dp" 
     android:textStyle="bold" 
     android:textColor="#FFFFFF" 
     android:background="@drawable/flower" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     /> </RelativeLayout> 

這裏是我的activitymain.java

public class MainActivity extends AppCompatActivity { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ImageButton one = (ImageButton) this.findViewById(R.id.button1); 
    ImageButton one = (ImageButton) this.findViewById(R.id.button1); 
    one.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
     ImageView iv =(ImageView)this.findViewById(R.id.view1) 
      int i = 0; 
      if (i == 0) { 
       iv.setImageResource(R.drawable.mountain)); 
       i++; 
      } else if (i == 1) { 
       iv.setImageResource(R.drawable.seashore3); 
       i++; 
      } else if (i == 2) { 
       iv.setImageResource(R.drawable.night1); 
       i++; 
      } else if (i == 3) { 
       iv.setImageResource(R.drawable.forest); 
       i = 0; 
      } 
     } 
    }); 

代碼注意先前發佈的問題在這裏計算器,我的問題是沒有關係的。正如我在這裏試圖完成的是使用buttonclick改變imageview的圖像。這在以前的任何問題中都沒有涉及。

更新:對於任何試圖使用imageview交換背景圖像的人,如問題中所述。請不要這樣做。在調試時,您需要經歷很多內存使用和崩潰。

改爲使用ImageSwitcher。這使您的視圖具有全屏幕背景。您可以從可繪製資源數組中進行選擇,然後使用按鈕進行隨機播放。

+0

嘿.show我的日誌 –

+1

它在哪裏崩潰?另外,您錯過了該活動的一些代碼;你在哪裏重寫'onCreate'? – ono

回答

2

我敢肯定你的錯誤是在這裏

ImageView iv =(ImageView)this.findViewById(R.id.view1) 

沒有活動,但onClickListener。 將您的ImageView提取到一個字段或使用包含活動實例實例的字段。

完整的示例:

public class MainActivity extends AppCompatActivity { 

ImageView iv; 

super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ImageButton one = (ImageButton) this.findViewById(R.id.button1); 
    ImageButton one = (ImageButton) this.findViewById(R.id.button1); 
    iv =(ImageView)this.findViewById(R.id.view1) 
    one.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      int i = 0; 
      if (i == 0) { 
       iv.setImageResource(R.drawable.mountain)); 
       i++; 
      } else if (i == 1) { 
       iv.setImageResource(R.drawable.seashore3); 
       i++; 
      } else if (i == 2) { 
       iv.setImageResource(R.drawable.night1); 
       i++; 
      } else if (i == 3) { 
       iv.setImageResource(R.drawable.forest); 
       i = 0; 
      } 
     } 
    }); 
0

只需更換這一個代碼,

 public class MainActivity extends AppCompatActivity { 
     int i = 0; 
    @Override 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
ImageButton one = (ImageButton) this.findViewById(R.id.button1); 
ImageButton one = (ImageButton) this.findViewById(R.id.button1); 
one.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
    ImageView iv =(ImageView)this.findViewById(R.id.view1); 

     if (i == 0) { 
      iv.setImageResource(R.drawable.mountain)); 
      i++; 
     } else if (i == 1) { 
      iv.setImageResource(R.drawable.seashore3); 
      i++; 
     } else if (i == 2) { 
      iv.setImageResource(R.drawable.night1); 
      i++; 
     } else if (i == 3) { 
      iv.setImageResource(R.drawable.forest); 
      i = 0; 
     } 
    } 
}); 
+0

我想他會遇到同樣的問題在這裏,看到我的回答 – Aerim

+0

不,你剛剛創建我作爲本地變量,這將無法正常工作。 –

+0

如果你再看看,你可以看到我創建它作爲班級領域 – Aerim