setOnClickListener错误 - 无法解析符号

时间:2016-07-19 14:28:54

标签: android button android-intent

我想创建一个按钮,当点击它时,它会显示另一个意图。

这是代码:

   <Button
    android:text="Bine ati venit!"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/button1"
    android:background="#479fc7"
    android:textSize="40dp"
    android:textColor="@color/colorPrimaryDark"
    android:textStyle="normal|bold|italic"
    android:textAllCaps="false"
    android:fontFamily="casual"
    android:onClick="next_page"/>

和.java类:

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_welcome);
}

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

button.setOnClickListener( new View.OnClickListener()
{
    public void onClick (View v){
    next_page(v);
}
});

public void next_page(View v) {
    Intent intent = new Intent(this, MapsActivity.class);
    startActivity(intent);
}

我收到错误: &#34;无法解析符号&#39; setOnClickListener&#39;&#34;,&#34;变量onClick永远不会被使用&#34;,&#34 ;;预期&#34; ...

6 个答案:

答案 0 :(得分:1)

您应该将该特定代码段放在OnCreate()中。这解决了我的问题。

答案 1 :(得分:0)

您可以在xml中使用方法名称声明onClick属性,也可以在onCreate方法中将其设置为programaticaly。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_welcome);

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

    button.setOnClickListener( new View.OnClickListener()
    {
        public void onClick (View v){
           next_page(v);
        }
    });
}

public void next_page(View v) {
    Intent intent = new Intent(this, MapsActivity.class);
    startActivity(intent);
}

答案 2 :(得分:0)

您需要像这样更改代码

Button button;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_welcome); 
    button = (Button) findViewById(R.id.button1);
    button.setOnClickListener( new View.OnClickListener(){ 
        public void onClick (View v){ 
            next_page(v); 
        } 
    }); 

} 

public void next_page(View v) {
    Intent intent = new Intent(this, MapsActivity.class);
    startActivity(intent);
} 

如果你不在那里使用它,你不需要将View对象传递给next_page()

答案 3 :(得分:0)

//您必须将键入的代码移动到类方法中,并按以下方式工作

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Find the View that shows the numbers category
        TextView numbers = (TextView) findViewById(R.id.numbers);

// Set a click listener on that View
        numbers.setOnClickListener(new View.OnClickListener() {
            // The code in this method will be executed when the numbers View is clicked on.
            @Override
            public void onClick(View view) {
                Intent numbersIntent = new Intent(MainActivity.this, NumberActivity.class);
                startActivity(numbersIntent);
            }
        });
    }

答案 4 :(得分:0)

关于错误: “无法解析符号'setOnClickListener'” 可能值得确保通过添加

导入了TextView。
import android.widget.TextView;

在文件顶部。

答案 5 :(得分:0)

您只需要更改代码的位置。

@Override
protected void onCreate(Bundle savedInstanceState) {
 ...
 Button button = (Button) findViewById(R.id.button1);

 button.setOnClickListener( new View.OnClickListener(){
     public void onClick (View v){
     next_page(v);
     }
 });
}
<块引用>

剪切代码并将其粘贴到 OnCreate 方法中。因为在按钮创建后设置 OnClickListener 没有意义。这就是错误发生的原因。