2013-10-15 79 views
0

我正在編寫具有一些壁紙的應用程序,並且我希望在應用壁紙時顯示Toast。目前只有在應用第一張壁紙時纔會顯示。任何想法如何讓它顯示每個壁紙?如何在應用壁紙時顯示「吐司」?

public class WallpaperActivity extends Activity implements OnClickListener { 

ImageView display; 
int toPhone; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_wallpaper); 
    // Show the Up button in the action bar. 
    setupActionBar(); 

    toPhone = R.drawable.wallpaper_11; 

    display = (ImageView) findViewById(R.id.IVdisplay); 
    ImageView image1 = (ImageView) findViewById(R.id.IVimage1); 
    ImageView image2 = (ImageView) findViewById(R.id.IVimage2); 
    ImageView image3 = (ImageView) findViewById(R.id.IVimage3); 
    ImageView image4 = (ImageView) findViewById(R.id.IVimage4); 
    ImageView image5 = (ImageView) findViewById(R.id.IVimage5); 
    ImageView image6 = (ImageView) findViewById(R.id.IVimage6); 
    ImageView image7 = (ImageView) findViewById(R.id.IVimage7); 
    ImageView image8 = (ImageView) findViewById(R.id.IVimage8); 
    ImageView image9 = (ImageView) findViewById(R.id.IVimage9); 
    ImageView image10 = (ImageView) findViewById(R.id.IVimage10); 
    ImageView image11 = (ImageView) findViewById(R.id.IVimage11); 

    Button setWall = (Button) findViewById(R.id.BsetWallpaper); 

    image1.setOnClickListener(this); 
    image2.setOnClickListener(this); 
    image3.setOnClickListener(this); 
    image4.setOnClickListener(this); 
    image5.setOnClickListener(this); 
    image6.setOnClickListener(this); 
    image7.setOnClickListener(this); 
    image8.setOnClickListener(this); 
    image9.setOnClickListener(this); 
    image10.setOnClickListener(this); 
    image11.setOnClickListener(this); 

    setWall.setOnClickListener(this); 

} 

@SuppressWarnings("deprecation") 
@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 

    switch (v.getId()){ 
    case R.id.IVimage1: 
     display.setImageResource(R.drawable.wallpaper_1p); 
     toPhone = R.drawable.wallpaper_1; 
     break; 
    case R.id.IVimage2: 
     display.setImageResource(R.drawable.wallpaper_2p); 
     toPhone = R.drawable.wallpaper_2; 
     break; 
    case R.id.IVimage3: 
     display.setImageResource(R.drawable.wallpaper_3p); 
     toPhone = R.drawable.wallpaper_3; 
     break; 
    case R.id.IVimage4: 
     display.setImageResource(R.drawable.wallpaper_4p); 
     toPhone = R.drawable.wallpaper_4; 
     break; 
    case R.id.IVimage5: 
     display.setImageResource(R.drawable.wallpaper_5p); 
     toPhone = R.drawable.wallpaper_5; 
     break; 
    case R.id.IVimage6: 
     display.setImageResource(R.drawable.wallpaper_6p); 
     toPhone = R.drawable.wallpaper_6; 
     break; 
    case R.id.IVimage7: 
     display.setImageResource(R.drawable.wallpaper_7p); 
     toPhone = R.drawable.wallpaper_7; 
     break; 
    case R.id.IVimage8: 
     display.setImageResource(R.drawable.wallpaper_8p); 
     toPhone = R.drawable.wallpaper_8; 
     break; 
    case R.id.IVimage9: 
     display.setImageResource(R.drawable.wallpaper_9p); 
     toPhone = R.drawable.wallpaper_9; 
     break; 
    case R.id.IVimage10: 
     display.setImageResource(R.drawable.wallpaper_10p); 
     toPhone = R.drawable.wallpaper_10; 
     break; 
    case R.id.IVimage11: 
     display.setImageResource(R.drawable.wallpaper_11p); 
     toPhone = R.drawable.wallpaper_11; 
     break; 

    case R.id.BsetWallpaper: 
     InputStream is = getResources().openRawResource(toPhone); 
     Bitmap b = BitmapFactory.decodeStream(is); 
     Toast.makeText(this, "Wallpaper set", Toast.LENGTH_SHORT).show(); 
     try{ 
      getApplicationContext().setWallpaper(b); 
     }catch(IOException e){ 
      e.printStackTrace(); 
     } 
     break; 

    } 

} 

/** 
* Set up the {@link android.app.ActionBar}. 
*/ 
private void setupActionBar() { 

    getActionBar().setDisplayHomeAsUpEnabled(true); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.wallpaper, menu); 
    return true; 
} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case android.R.id.home: 
     NavUtils.navigateUpFromSameTask(this); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 


} 
+0

只需將您的吐司添加到每個案例。如果你不想重複代碼,你也可以創建一個輔助方法,在被調用時創建一個toast。 – buczek

+0

是的,這是問題所在。我不明白爲什麼... – fredthemugwump

回答

0

好的。因此很明顯,選擇應用壁紙的新更新的方法,並把烤麪包片的嘗試方法將每一次給我敬酒:

case R.id.BsetWallpaper: 

     try{ 

      WallpaperManager.getInstance(getApplicationContext()).setResource(toPhone); 
      Toast.makeText(this, "Wallpaper set", Toast.LENGTH_SHORT).show(); 

     }catch(IOException e){ 
      e.printStackTrace(); 
     } 
     break; 

使用WallpaperManager也將適用壁紙快沒有一次崩潰的應用程序而。謝謝你們的幫助!

0

在你的每個案例中加上這個Toast.makeText(this, "Wallpaper set", Toast.LENGTH_SHORT).show();。這將做到這一點。

+0

我已經測試過,但那並不能解決我的問題。每次點擊圖片時,吐司都會顯示出來,但我只希望它在按下按鈕時出現。 – fredthemugwump