Android Activity findviewbyid()为null

时间:2012-05-24 10:41:37

标签: 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()");
    }
}

这是一个简单的Activity,由另一个使用Intent

的活动引入
Intent openFileBrowser = new Intent(this, FileExplorerActivity.class);
try
{
    startActivity(openFileBrowser); 
}

运行代码后,我的LogCat文件说“button is null”为什么???

3 个答案:

答案 0 :(得分:15)

正如其他人所说,在调用setContentView()之前,您没有通过findViewById() 设置布局。

  

为什么我需要它?

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

因此,您应在调用super.onCreate()

后添加布局
super.onCreate(savedInstanceState);
setContentView(R.layout.yourlayout);

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

答案 1 :(得分:1)

您需要设置布局

setContentView(R.layout.main_layout);

答案 2 :(得分:0)

下一个代码解决了这个问题(Xamarin Android)

var $img = $("<img>");

$img.on('load', function (e) {
    this.$photoImageManager.attr('src', e.target.src);
}.bind(this));

$img.attr('src', "../../users/" + userId + "/" + userId + "-photo.png");