0

私は以下のように3つのアイコンを持つ線形レイアウトを持っています

 <ImageView
            android:id="@+id/cities"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content          
            android:src="@drawable/city" />

        <ImageView
            android:id="@+id/red"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"           
            android:src="@drawable/red"
            android:visibility="gone" 
            />
        <ImageView
            android:id="@+id/deal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"       
            android:src="@drawable/deal" />

最初は中央のアイコンが非表示になっています (android:visibility="gone") ログイン画面があります.ログインに成功すると、アイコンを表示したい..以下のように試してみました.

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.fyelogin);                    
    etPassword = (EditText)findViewById(R.id.password);
    btnLogin = (Button)findViewById(R.id.login_button);
    btnCancel = (Button)findViewById(R.id.cancel_button);
    lblResult = (TextView)findViewById(R.id.result);

    final ImageView details = (ImageView)findViewById(R.id.red); 

    btnLogin.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {

            String password = etPassword.getText().toString();

            if(password.equals("guest")){
                lblResult.setText("password successful.");

    giving error @ this line  ----->  details.setVisibility(View.VISIBLE);

            } else {
                lblResult.setText("password doesn't match.");
            }

            finish();
        }
    });
4

2 に答える 2

2

後でリスナーが確実にアクセスできるように、ImageView の詳細オブジェクトをクラス変数にする必要があります。

于 2012-11-29T06:10:37.500 に答える
0

これを試して、

ImageView details;
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.fyelogin);                    
        etPassword = (EditText)findViewById(R.id.password);
        btnLogin = (Button)findViewById(R.id.login_button);
        btnCancel = (Button)findViewById(R.id.cancel_button);
        lblResult = (TextView)findViewById(R.id.result);
        details = (ImageView)findViewById(R.id.red); 

        btnLogin.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {

                String password = etPassword.getText().toString();

                if(password.equals("guest")){
                    lblResult.setText("password successful.");

                     details.setVisibility(View.VISIBLE);

                } else {
                    lblResult.setText("password doesn't match.");

                }

                finish();} });
于 2012-11-29T06:25:13.383 に答える