2012-02-10 33 views
2

私は非常にプログラミングに新しいと私のコードは醜い場合はごめんなさい申し訳ありません。別のメソッドでfindViewById変数を使用する方法。 JavaのAndroid

表示される画像を変更する左右の矢印ボタンを持つ画面のようなメニューを作成しようとしています。最初の画像で左矢印が消え、最後の画像が表示されているときに右矢印が消えたときに、そのようにしたいと思います。

私はこれを多くの方法でやろうとしましたが、解決できないところでいつも変数が必要になってしまいました。投稿されたコードでは、switchステートメントにエラーがあり、未解決の変数エラーをonClickListenerにコード化しようとしました。

あなたは私のためにそれをコード化する必要はありません、私が逃している概念を知らせてください、そして私はそれについて勉強します。これは動作するはず

おかげ

package com.mystuff.mymenu; 

    import android.app.Activity; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.view.View.OnClickListener; 
    import android.widget.ImageButton; 
    import android.widget.ImageView; 



public class PictureMenu extends Activity implements OnClickListener{ 

int setView = 1;  

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

    menuSet(setView); 

ImageButton right = (ImageButton) findViewById(R.id.rightButton); 
ImageButton left = (ImageButton) findViewById(R.id.leftButton); 
right.setOnClickListener(this); 
left.setOnClickListener(this); 

}  
@Override 
public void onClick(View v) { 
if(v.getId() == R.id.rightButton){ 
    setView ++; 
    menuSet(setView); 
if(v.getId() == R.id.rightButton){ 
    setView ++; 
     menuSet(setView); 
} 
    } 
    } 


private void menuSet(int setView) { 

    ImageView picture1 = (ImageView) findViewById(R.id.picture1); 
    ImageView picture2 = (ImageView) findViewById(R.id.picture2); 
    ImageView picture3 = (ImageView) findViewById(R.id.picture3); 
    ImageView picture4 = (ImageView) findViewById(R.id.picture4); 

    switch(setView){ 
    case 1: 
     left.setVisibility(View.GONE); //ERROR left cannot be resolved 
     right.setVisibility(View.VISIBLE); //ERROR right cannot be resolved 
     picture1.setVisibility(View.VISIBLE); 
     picture2.setVisibility(View.GONE); 
     picture3.setVisibility(View.GONE); 
     picture4.setVisibility(View.GONE); 
     break; 
    case 2: 
     left.setVisibility(View.VISIBLE); //ERROR left cannot be resolved 
     right.setVisibility(View.VISIBLE); //ERROR right cannot be resolved 
     picture1.setVisibility(View.GONE); 
     picture2.setVisibility(View.VISIBLE); 
     picture3.setVisibility(View.GONE); 
     picture4.setVisibility(View.GONE); 
     break; 
    case 3: 
     left.setVisibility(View.VISIBLE); //ERROR left cannot be resolved 
     right.setVisibility(View.VISIBLE); //ERROR right cannot be resolved 
     picture1.setVisibility(View.GONE); 
     picture2.setVisibility(View.GONE); 
     picture3.setVisibility(View.VISIBLE); 
     picture4.setVisibility(View.GONE); 
     break; 
    case 4: 
     left.setVisibility(View.VISIBLE); //ERROR left cannot be resolved 
     right.setVisibility(View.GONE); //ERROR right cannot be resolved 
     picture1.setVisibility(View.GONE); 
     picture2.setVisibility(View.GONE); 
     picture3.setVisibility(View.GONE); 
     picture4.setVisibility(View.VISIBLE); 
     break; 
    default: 
     left.setVisibility(View.GONE); //ERROR left cannot be resolved 
     right.setVisibility(View.VISIBLE); //ERROR right cannot be resolved 
     picture1.setVisibility(View.VISIBLE); 
     picture2.setVisibility(View.GONE); 
     picture3.setVisibility(View.GONE); 
     picture4.setVisibility(View.GONE); 
     break; 
}  


} 



} 

答えて

1

package com.mystuff.mymenu; 

    import android.app.Activity; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.view.View.OnClickListener; 
    import android.widget.ImageButton; 
    import android.widget.ImageView; 



public class PictureMenu extends Activity implements OnClickListener{ 

private ImageButton right, left; 

int setView = 1;  

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

    menuSet(setView); 

right = (ImageButton) findViewById(R.id.rightButton); 
left = (ImageButton) findViewById(R.id.leftButton); 
right.setOnClickListener(this); 
left.setOnClickListener(this); 

}  
@Override 
public void onClick(View v) { 
if(v.getId() == R.id.rightButton){ 
    setView ++; 
    menuSet(setView); 
if(v.getId() == R.id.rightButton){ 
    setView ++; 
     menuSet(setView); 
} 
    } 
    } 


private void menuSet(int setView) { 

    switch(setView){ 
    case 1: 
     left.setVisibility(View.GONE); //ERROR left cannot be resolved 
     right.setVisibility(View.VISIBLE); //ERROR right cannot be resolved 
     picture1.setVisibility(View.VISIBLE); 
     picture2.setVisibility(View.GONE); 
     picture3.setVisibility(View.GONE); 
     picture4.setVisibility(View.GONE); 
     break; 
    case 2: 
     left.setVisibility(View.VISIBLE); //ERROR left cannot be resolved 
     right.setVisibility(View.VISIBLE); //ERROR right cannot be resolved 
     picture1.setVisibility(View.GONE); 
     picture2.setVisibility(View.VISIBLE); 
     picture3.setVisibility(View.GONE); 
     picture4.setVisibility(View.GONE); 
     break; 
    case 3: 
     left.setVisibility(View.VISIBLE); //ERROR left cannot be resolved 
     right.setVisibility(View.VISIBLE); //ERROR right cannot be resolved 
     picture1.setVisibility(View.GONE); 
     picture2.setVisibility(View.GONE); 
     picture3.setVisibility(View.VISIBLE); 
     picture4.setVisibility(View.GONE); 
     break; 
    case 4: 
     left.setVisibility(View.VISIBLE); //ERROR left cannot be resolved 
     right.setVisibility(View.GONE); //ERROR right cannot be resolved 
     picture1.setVisibility(View.GONE); 
     picture2.setVisibility(View.GONE); 
     picture3.setVisibility(View.GONE); 
     picture4.setVisibility(View.VISIBLE); 
     break; 
    default: 
     left.setVisibility(View.GONE); //ERROR left cannot be resolved 
     right.setVisibility(View.VISIBLE); //ERROR right cannot be resolved 
     picture1.setVisibility(View.VISIBLE); 
     picture2.setVisibility(View.GONE); 
     picture3.setVisibility(View.GONE); 
     picture4.setVisibility(View.GONE); 
     break; 
}  


} 



} 
5

あなたの問題は、そのにあるがのonCreate()メソッドに対してローカルであり、そしてから見ることができないを残しましたその方法外。あなたがそれらをクラススコープを使用する場合は、そのクラスの属性、例えばます

public class PictureMenu extends Activity implements OnClickListener { 

    int setView = 1; 
    ImageButton right, left; 
    ... 

    protected void onCreate(Bundle savedInstanceState) { 
     ... 
     right = (ImageButton) findViewById(R.id.rightButton); 
     left = (ImageButton) findViewById(R.id.leftButton); 
     ... 
    } 

別の解決策は、menuSet()

私見に引数として渡すことになるには、最初に特別に、適切なプログラミングを学ぶ必要があります何がvariable scopeです。 また、コードを適切に書式設定すると、スコープを簡単に見つけやすくなります。

関連する問題