setOnClickListener无法正常工作

时间:2013-07-16 20:39:34

标签: android

我已经尝试过其他几次问这个问题,但所有其他工作的报告似乎与我的相同,除了我的工作不起作用。它编译并运行并且不会崩溃,但它根本不会执行它应该执行的操作。在代码中,“Alpha”错误日志不会发生,因此它无法识别它被点击。

这是相关的代码片段。有什么想法吗?

    for(int i=0; i<[big long statement]; ++i)
    {
        final TextView resourceText= new TextView(ctx);
        resourceText.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
        resourceText.setText([big long statement]);
        resourceText.setTextSize(18);
        resourceText.setClickable(true);
        resourceText.setFocusable(false);
        resourceText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.e("Alpha", "Alpha");
                resourceText.setTextColor(Color.RED);
            }
        });
        scrollLinearLayout.addView(resourceText);
    }

这是创建scrollLinearLayout的地方

    //Add Linear Layout for the scrollview
    scrollLinearLayout = new LinearLayout(ctx);
    scrollLinearLayout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1));
    scrollLinearLayout.setOrientation(LinearLayout.VERTICAL);
    //scrollLinearLayout.setId(MyR.Ids.ROOMDIALOGFRAGMENTLL_ID);
    resourceScrollView.addView(scrollLinearLayout);

由于

2 个答案:

答案 0 :(得分:0)

也许你应该将听众从循环中移开:

   for(int i=0; i<[big long statement]; ++i)
    {
        final TextView resourceText= new TextView(ctx);
        resourceText.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
        resourceText.setText([big long statement]);
        resourceText.setTextSize(18);
        resourceText.setClickable(true);
        resourceText.setFocusable(false);
        resourceText.setOnClickListener(onClickListener);
        scrollLinearLayout.addView(resourceText);
    }
    View.OnClickListener onClickListener = new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Log.e("Alpha", "Alpha");
                ((Button)v).setTextColor(Color.RED);
            }
        };

答案 1 :(得分:0)

这是因为您的linearlayout包含textview,resourceText。如果您允许LinearLayout使用点击次数,那么textview将永远不会看到点击。您需要尝试将android:descendantFocusability =“afterDescendents”添加到LinearLayout