为什么android onlick主要活动不起作用

时间:2016-08-10 17:47:51

标签: android

我用空活动构建一个新的Android应用程序 并添加了一个仅用于测试的onlick功能 似乎没有用的东西

该应用程序在我的LGg2 android devive上运行 但似乎onclick监听器没有响应 当我点击按钮(id:butt)

在调试模式下,我可以步骤查看监听器是否构建 但我从未到过断点 在我设置文本的行中(.. t.setText(...

有人可以看到,我做错了什么?

这是我的布局

    public class MainActivity extends AppCompatActivity
    {
        public static View rootView;

        public static Button b;
        public static TextView t;

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

        rootView = getLayoutInflater().inflate(R.layout.activity_main, null);
        b = (Button) rootView.findViewById(R.id.butt);
        t = (TextView) rootView.findViewById(R.id.t);
        b.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view)
            {
            t.setText("lsdallsd");
            Log.d("asadssd","ssdasd");
            view.setBackgroundColor(Color.RED);

            }
        });
        }
    }

这里是我有onclicklistener的主要活动

{{1}}

5 个答案:

答案 0 :(得分:1)

而不是

rootView = getLayoutInflater().inflate(R.layout.activity_main, null);
b = (Button) rootView.findViewById(R.id.butt);
t = (TextView) rootView.findViewById(R.id.t);

使用

b = (Button)findViewById(R.id.butt);
t = (TextView) findViewById(R.id.t);

答案 1 :(得分:0)

您正在给另一个视图充气,并在那里添加点击监听器。然而,被setContentView()膨胀的那个人永远不会得到一个听众。将您的代码更改为:

    setContentView(R.layout.activity_main);

    b = (Button)findViewById(R.id.butt);
    t = (TextView) findViewById(R.id.t);

答案 2 :(得分:0)

不要夸大视图,这是多余的。

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

    b = (Button) findViewById(R.id.butt);
    t = (TextView) findViewById(R.id.t);
    b.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View view)
        {
        t.setText("lsdallsd");
        Log.d("asadssd","ssdasd");
        view.setBackgroundColor(Color.RED);

        }
    });
    }

答案 3 :(得分:0)

无需在活动中使用布局inflater。

public class MainActivity extends AppCompatActivity {

    public  TextView t;
    public  Button b;

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

        b = (Button) findViewById(R.id.butt);
        t = (TextView) findViewById(R.id.t);

        b.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                t.setText("lsdallsd");
                Log.d("asadssd", "ssdasd");
                view.setBackgroundColor(Color.RED);

            }
        });
    }
}

答案 4 :(得分:0)

确定我自己发现了问题 必须是

b = (Button) findViewById(R.id.butt);

而不是

b = (Button) rootView.findViewById(R.id.butt);

但为什么我不知道 我想膨胀布局 并会给出相同的结果