2014-10-07 61 views
0

我想製作一個簡單的應用程序與一個圖像,下面有兩個按鈕。下一個按鈕和上一個按鈕。當他們點擊「下一步」時,它會將圖片更改爲下一張圖片。當他們點擊「上一個」時,它會將圖片更改爲上一張圖片。我的活動名稱是「imagescreen」,我的按鈕ID是「上一個」和「下一個」。我的imageview ID是「ImageView」。安卓圖片隨着按鈕點擊順序改變

我似乎無法完成這項工作。我試過這個,但是我的應用崩潰了。抱歉,我對此感到陌生並盡力而爲。

我也想使它成爲「前一個」按鈕變灰/禁用第一個圖像(這是資源r1.png),但無法弄清楚如何做到這一點的時候。

public class imagescreen extends Activity implements View.OnClickListener { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_imagescreen); 

    previous = (Button) findViewById(R.id.previous); 
    previous.setOnClickListener(this); 

    next = (Button) findViewById(R.id.next); 
    next.setOnClickListener(this); 

} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.swipepage, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

@Override 
public void onClick(View view) { 

    switch (view.getId()) { 
     case R.id.next: 
      if (a == 0) { 
       image.setImageResource(R.drawable.r2); 
       a = 1; 
      } else if (a == 1) { 
       image.setImageResource(R.drawable.r3); 
       a = 2; 
      } else if (a == 2) { 
       image.setImageResource(R.drawable.r1); 
       a = 3; 
     case R.id.previous: 
      a--; 
      View previous; 
      previous.performClick(); 
      break; 
    } 
} 
+0

顯示你的日誌,你真讓崩潰。 – 2014-10-07 05:07:15

+1

在R.id.next案件後添加'break'語句。 – 2014-10-07 05:23:28

回答

0

不要這樣做。使用Viewpager進行圖像更改,它支持滑動到下一個和上一個。

此外,你也可以編寫按鈕的代碼。

請參閱本教程將有所幫助。 Example

0

我認爲這是與NPE崩潰,看到我沒有看到你已經宣佈「a」是什麼,你還沒有宣佈你的「圖像」imageView。

你可以做這樣的事情:

 public class ImageScreen extends Activity implements View.OnClickListener { 

Button previous, next; 
ImageView image; 
int a; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_imagescreen); 

     previous = (Button) findViewById(R.id.previous); 
     previous.setOnClickListener(this); 

     next = (Button) findViewById(R.id.next); 
     next.setOnClickListener(this); 

     image = (ImageView) findViewById(R.id.yourImageView); //Change accordingly 
     image.setImageResource(R.drawable.r1); //Set your first image to be displayed 
     a = 1; //declare a variable and set it to 1 

    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.swipepage, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    @Override 
    public void onClick(View view) { 

     switch (view.getId()) { 
      case R.id.next: 
       if (a == 1) { 
        image.setImageResource(R.drawable.r2); 
        a = 2; 
       } else if (a == 2) { 
        image.setImageResource(R.drawable.r3); 
        a = 3; 
       } else if (a == 3) { 
        Toast.makeText(ImageScreen.this, "No more photos to show", Toast.LENGTH_SHORT).show() ; 
break; 

      case R.id.previous: 
       if (a == 1) { 
        Toast.makeText(ImageScreen.this, "No more photos to show", Toast.LENGTH_SHORT).show() ; 
       } else if (a == 2) { 
        image.setImageResource(R.drawable.r1); 
        a = 1; 
       } else if (a == 3) { 
        image.setImageResource(R.drawable.r2); 
        a = 2; 
       break; 
     } 
    } 
+0

嗨gilonm,看看我上面發佈。 – Photogd 2014-10-08 00:28:31

+0

嗨!檢查我編輯的答案。你會看到我向Buttons,ImageView和int聲明瞭onCreate方法,並且在你的switch語句中,我在第一個case後添加了一個「break」。現在就試試... – gilonm 2014-10-08 04:56:47

0

我想最後的用戶發佈的,但在這部分代碼中,「一」和「形象」的部分爲紅色,表示它不能解決符號。

@Override 
public void onClick(View view) { 

    switch (view.getId()) { 
     case R.id.next: 
      if (a == 1) { 
       image.setImageResource(R.drawable.r2); 
       a = 2; 
      } else if (a == 2) { 
       image.setImageResource(R.drawable.r3); 
       a = 3; 
      } else if (a == 3) { 
       Toast.makeText(swipepage.this, "No more photos to show", Toast.LENGTH_SHORT).show(); 
      } 
       case R.id.previous: 
        if (a == 1) { 
         Toast.makeText(swipepage.this, "No more photos to show", Toast.LENGTH_SHORT).show() ; 
        } else if (a == 2) { 
         image.setImageResource(R.drawable.r1); 
         a = 1; 
        } else if (a == 3) { 
         image.setImageResource(R.drawable.r2); 
         a = 2; 
         break; 
        } 
      } 

}