-1

をクリックして、あるアクティビティから別のアクティビティに移動しようとしていImageButtonます。しかし、ボタンをクリックしても、コードで指定したアクティビティに移動せず、エラーも発生しません。どこに問題があるのか​​ わかりません
。次のアクティビティを呼び出すコードは次のとおりです。

    package com.birthdayreminder;

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ImageButton;
    import android.widget.TextView;

       public class Reminder extends Activity {

ImageButton view, add, edit;

TextView tvadd, tvedit, tvview;

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

}

public void innicialize() {

    // assigning buttons
    view = (ImageButton) findViewById(R.id.bView);
    add = (ImageButton) findViewById(R.id.bAdd);
    edit = (ImageButton) findViewById(R.id.bEdit);

    // assign textview
    tvadd = (TextView) findViewById(R.id.tvAdd);
    tvedit = (TextView) findViewById(R.id.tvEdit);
    tvview = (TextView) findViewById(R.id.tvView);




add.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        Intent i=new Intent(Reminder.this, Addreminder.class);
        startActivity(i);
    }
});

       edit.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // enter the code for bEditBtn click here
    }
});

      view.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // enter the code for bViewBtn click here
    }
    });
}

   } 

でクラス名も宣言しましたmanifest.xmlが、機能しません

Logcat ログ ファイル: ボタンをクリックした後の最後の logcat ファイルの 5 行:

    05-15 18:19:25.495: W/AudioFlinger(33): write blocked for 69 msecs, 1245 delayed                
    writes, thread 0xc658
    05-15 18:19:28.964: I/ActivityManager(60): Starting: Intent {         
    act=com.birthdayreminder.REMINDER cmp=com.birthdayreminder/.Reminder } from pid 548
    05-15 18:19:29.409: I/ActivityManager(60): Displayed  
    com.birthdayreminder/.Reminder: +426ms
4

5 に答える 5

1

Remainder.this の代わりに getApplicationContext() を使用してみてください

于 2013-05-15T11:52:36.317 に答える
0

イメージボタンにクリックリスナーがあるかどうかを確認し、クリック時に何をするかを宣言しましたが、イメージボタンにリスナーがない場合はとにかく機能しません。次のようなものを試すことができます:

yourImageButton.setOnClickListener(new View.OnClickListener() {

          @Override
          public void onClick(View v) {
            Intent intent = new Intent(Reminder.this, Addreminder.class);
            startActivity(intent);
            }
        });

これを行った後、XML ファイルでアクティビティを宣言しておく必要があります。

<activity android:name="packageName.className" />

最後に、新しいクラスもうまく機能しているかどうかを確認しますが、問題ないはずです!

================================================== ================================

関数内で関数またはプロシージャを宣言してはなりません (onCreate で行ったように)。onCreate 関数で初期化で行うことは、次のように行うだけです。

package com.birthdayreminder;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;

public class Reminder extends Activity {

private ImageButton view;
private ImageButton add;
private ImageButton edit;

private TextView tvadd;
private TextView tvedit;
private TextView tvview;

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


    // Instantiating Buttons
    view = (ImageButton) findViewById(R.id.bView);
    add = (ImageButton) findViewById(R.id.bAdd);
    edit = (ImageButton) findViewById(R.id.bEdit);

    // Instantiating Views
    tvadd = (TextView) findViewById(R.id.tvAdd);
    tvedit = (TextView) findViewById(R.id.tvEdit);
    tvview = (TextView) findViewById(R.id.tvView);


        // Adding a clickListener on add button
    add.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent i=new Intent(Reminder.this, Addreminder.class);
            startActivity(i);
        }
    });
    // Adding a clickListener on edit button
    edit.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // enter the code for bEditBtn click here
        }
    });
       // Adding a clickListener on view button
       view.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // enter the code for bViewBtn click here
        }
    });
  }

}

それでも問題が解決しない場合は、XML ファイルを確認し、ボタンが適切に宣言されているかどうかを確認してください。

修正された問題: 最初の関数を呼び出すたびに 2 番目の関数を再度定義するため、関数内で関数を定義しないでください。あなたがしたことは間違っています:

onCreate {                  //WRONG VERSION
   bla bla bla bla
   initialisation {
      bla bla bla
   }
}

あなたがしなければならないこと:

onCreate {                  //GOOD VERSION
   initialisation();
   bla bla bla
}
initialisation {
   bla bla bla 
}

関数内で関数を呼び出すことはできますが、関数内で関数を定義することはできません。

さらに、初期化関数を呼び出すことはありません。onCreate 関数で今すぐ呼び出す必要があります。そうしないと、何も起こりません。

于 2013-05-15T12:08:14.153 に答える
0

ボタンを初期化し、 oncreate() で最初にリスナーを追加します

ボタン btnAdd = (ボタン) findViewById(R.id.bAdd);
btnAdd.setOnClickListener(これ);

于 2013-05-15T12:09:23.190 に答える
0

最初のアクティビティのボタンを次のように個別に初期化します。

 Button bAddbutton= (Button) findViewById(R.id.bAdd);
    Button bEditBtn= (Button) findViewById(R.id.bEdit);
    Button bViewBtn= (Button) findViewById(R.id.bView);

次に、以下に示すように、ボタンごとに個別の onClick リスナーを追加します。

bAddbutton.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    Intent i=new Intent(Reminder.this, Addreminder.class);
                    startActivity(i);
                }
            });

    bEditBtn.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // enter the code for bEditBtn click here
                }
            });

    bViewBtn.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // enter the code for bViewBtn click here
                }
            });
于 2013-05-15T12:06:19.403 に答える
0

追加ボタンに onClickListener を設定しましたか。

btnAdd.setOnClickListener(this);

もチェック

あなたv.getId()case R.id.bAdd:同じですか?デバッグして、ケース R.id.bAdd: が実行されていることを確認します..

于 2013-05-15T11:59:52.710 に答える