无法解决符号集#OnClickListener' Android Studio

时间:2015-12-27 12:00:16

标签: java android

大家好,我在android studio上开始了我的第一个应用程序,并且我在#34中得到了这个错误;无法解决符号' set.OnClickListener'"如下图所示 请我在谷歌进行了很多搜索来解决它,但没有找到。 所以请有人帮忙。 谢谢。

package com.example.omar.app1;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.view.View.OnClickListener;
import static android.view.View.OnClickListener;


public class Main extends Activity {

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


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}
Button b = (Button) findViewById(R.id.button1);

b.setOnClickListener(new  View.OnClickListener()
{
    public void onClick(View v)
    {startActivity(new Intent(Main.this,Second.class)); }

});

}

4 个答案:

答案 0 :(得分:1)

在结束onCreate()之前,将所有与您的按钮相关的代码移至setContentView()}之后)。

答案 1 :(得分:1)

我的例子是:

public class MainActivity extends Activity {
    Button b;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b = (Button) findViewById(R.id.button);
        b.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(Main.this,Second.class));
            }
        });
    }
}

我希望此文档可以帮助您Button ClasssetOnClickListener

答案 2 :(得分:0)

与按钮相关的所有代码必须在行之后的onCreate()方法中:setContentView(R.layout.activity_main);

这些行:

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

b.setOnClickListener(new  View.OnClickListener()
{
    public void onClick(View v)
    {startActivity(new Intent(Main.this,Second.class)); }

});

必须在setContentView(R.layout.activity_main)之后的onCreate方法中编写

答案 3 :(得分:0)

错误是按钮b =(按钮)findViewById(R.id.button1);

你声明你的按钮并在编译时用

初始化它
Button b = (Button) findViewById(R.id.button1);

当然之前,你创建视图是不可能找到没有上下文的id。 您可以在设置内容后附加任何视图。

所以你可以改变

// compile time
Button b = (Button) findViewById(R.id.button1);

在此

Button b;

你可以改变你的onCreate:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // now you can attach the view
    b = (Button) findViewById(R.id.button1);
}

在此之后,您可以像在下一行中那样设置匿名类型的单击侦听器,或者仍然可以在编译时声明侦听器并更改它:

b.setOnClickListener(new  View.OnClickListener()
{
    public void onClick(View v)
    {startActivity(new Intent(Main.this,Second.class)); }

});

在此:

View.OnClickListener myClickListener = new  View.OnClickListener()
{
    public void onClick(View v)
    {
        startActivity(new Intent(Main.this,Second.class)); 
    }
};

但现在您需要设置OnClickListener,因此onCreate将:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // now you can attach the view
    b = (Button) findViewById(R.id.button1);
    b.SetOnClickListener(myClickListener);
}

希望这有助于理解。