Слушатель не стреляет в мою деятельность - PullRequest
0 голосов
/ 10 марта 2012

Я пытаюсь добавить прослушиватель щелчков и прослушиватель длинных щелчков к моей основной активности, но он не срабатывает ... ниже приведен мой код, не знаю, почему он не срабатывает, может кто-нибудь сказать мне, что мне не хватает?Можно ли даже добавить прослушиватель для всей активности?

public class HomeFavesActivity extends Activity implements OnClickListener, OnLongClickListener{

    private static final String TAG = "HomeFavesCatovoty";
    private ArrayList<Integer> mIcons = new ArrayList<Integer>();
    IconTray iconTray; 

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Log.v(TAG, "CREATED");

       DataBaseManager db = new DataBaseManager(this);
        /*db.getWritableDatabase();
        db.AddHomeScreenIcon(1);
        db.AddHomeScreenIcon(2);
        db.AddHomeScreenIcon(3);
        db.AddHomeScreenIcon(4);
        db.AddHomeScreenIcon(5);
        db.AddHomeScreenIcon(6);
        db.AddHomeScreenIcon(7);*/

        getScreenIcons(db);

    }

    private void getScreenIcons(DataBaseManager db){
        mIcons = db.getScreenIcons("TestScreenIcons");
        Log.v(TAG, "List Length:"+  mIcons.size());

        RelativeLayout rl = (RelativeLayout)findViewById(R.id.main);


        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);

        int screenWidth = metrics.heightPixels;
        int screenHeight = metrics.widthPixels;

        iconTray = new IconTray(this, mIcons, null, screenWidth, screenHeight);
        /*
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(screenWidth, screenHeight);
        params.addRule(rl.CENTER_IN_PARENT);
        iconTray.setLayoutParams(params);*/
        rl.addView(iconTray);

        rl.setOnLongClickListener(this);

        rl.setOnClickListener(this);


    }

    public void onClick() {
        // TODO Auto-generated method stub
        Toast.makeText(this, "woot", 
                Toast.LENGTH_SHORT).show();
    }

    public boolean onLongClick(View v) {
        // TODO Auto-generated method stub
        iconTray.longClickMode();
        return false;
    }

    public void onClick(DialogInterface dialog, int which) {
        // TODO Auto-generated method stub
        iconTray.clickMode();
    }




}

ОК, так что теперь слушатель LongClick работает, но если добавить строку для щелчка, он не будет опубликован, потому что он генерирует ошибку.

Метод setOnClickListener (View.OnClickListener) в типе View не применим для аргументов (HomeFavesActivity)

1 Ответ

1 голос
/ 10 марта 2012

Вам необходимо связать представление с прослушивателем onclick.

ех.

Button button = (Button)findViewById(R.id.my_button);
button.setOnClickListener(this);

тогда всякий раз, когда вы нажимаете вашу кнопку, она вызывает вызывающего вас слушателя. Если вы хотите, чтобы все ваши действия были доступны для выбора, вы можете выбрать родительский макет (например, LinearLayout или RelativeLayout в вашем файле main.xml) и следовать тому же коду, приведенному выше, но для этого типа представления. Вот так:

LinearLayout parent = (LinearLayout)findViewById(R.id.parent_layout);
parent.setOnClickListener(this);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...