簡體   English   中英

Android Activity findviewbyid() 為空

[英]Android Activity findviewbyid() is null

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;

public class FileExplorerActivity extends Activity 
{
    public static final String TAG="ricky";
    Button button;
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        button = (Button) findViewById(R.id.but);<<<------------------
        if(button == null)
        Log.d(TAG, "FileExplorerActivity: button is null");
    }
    public FileExplorerActivity()
    {
       Log.d(TAG, "FileExplorer: constructor()");
    }
}

這是一個簡單的 Activity,它被另一個使用 Intent 的 Activity 帶到前面

Intent openFileBrowser = new Intent(this, FileExplorerActivity.class);
try
{
    startActivity(openFileBrowser); 
}

運行代碼后,我的 LogCat 文件顯示“按鈕為空”為什么???

正如其他人所說,調用findViewById()之前,您沒有通過setContentView()設置布局。

為什么我需要那個?

因為Activity.findViewById()在當前活動的視圖層次結構中搜索。 如果您不設置視圖層次結構,則找不到任何內容。 當這個方法沒有發現任何東西時,它返回 null。

因此你應該在調用super.onCreate()之后添加一個布局

super.onCreate(savedInstanceState);
setContentView(R.layout.yourlayout);

button = (Button) findViewById(R.id.but);
// ... 

你需要設置你的布局

setContentView(R.layout.main_layout);

下一個代碼解決了這個問題(Xamarin Android)

public class MainActivity : WearableActivity
{
    ...

    OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        **SetContentView(Resource.Layout.RoundMain);**

        // Does not return null anymore:

        FindViewById<Button>(Resource.Id.ButtonVgOk).LongClick += (s, e) => ButtonVgOkOnLongClick();

        ...
   }

暫無
暫無

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

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