Android Activity findviewbyid()为null

Anj*_*anu 6 android android-intent findviewbyid

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()");
    }
}
Run Code Online (Sandbox Code Playgroud)

这是一个简单的Activity,由另一个使用Intent的活动引入

Intent openFileBrowser = new Intent(this, FileExplorerActivity.class);
try
{
    startActivity(openFileBrowser); 
}
Run Code Online (Sandbox Code Playgroud)

运行代码后我的LogCat文件说"按钮为空"为什么???

小智 15

正如其他人所说,你setContentView() 调用之前没有设置布局findViewById().

我为什么需要那个?

因为Activity.findViewById()在视图中搜索当前活动的层次结构.如果您没有设置视图层次结构,则无法找到任何内容.当此方法什么都找不到时,它返回null.

因此,您应该在调用后添加布局 super.onCreate()

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

button = (Button) findViewById(R.id.but);
// ... 
Run Code Online (Sandbox Code Playgroud)