簡體   English   中英

setOnClickListener 錯誤 - 無法解析符號

[英]setOnClickListener error - cannot resolve symbol

我想創建一個按鈕,單擊該按鈕時會顯示另一個意圖。

這是代碼:

   <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);
}

我收到錯誤消息:“無法解析符號‘setOnClickListener’”、“從未使用過變量 onClick”、“; 預期”....

您應該將該特定片段放在OnCreate() 那為我解決了這個問題。

// 您必須將您鍵入的代碼移動到類方法中並按如下方式工作

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);
            }
        });
    }

您需要像這樣更改代碼

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()

您可以在 xml 中使用方法名稱聲明 onClick 屬性,或者在 onCreate 方法中以編程方式設置它。

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);
}

您應該聲明按鈕變量並在oncreate()函數下編寫Setonclicklistner()函數。否則它將無法正常工作。

關於錯誤:“無法解析符號'setOnClickListener'”可能值得確保您通過添加導入了TextView

import android.widget.TextView;

到文件的頂部。

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

@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沒有意義。 這就是錯誤發生的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM