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

これは、インテントを使用して別のアクティビティによって前面に表示される単純なアクティビティです。

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

コードを実行した後、LogCatファイルに「ボタンがnullです」と表示されるのはなぜですか?

4

3 に答える 3

18

他の人が述べたように、あなたはを呼び出すsetContentView() 前に経由でレイアウトを設定しませんでしたfindViewById()

なぜそれが必要なのですか?

Activity.findViewById()現在のアクティビティのビュー階層で検索するためです。ビュー階層を設定しない場合、何も見つかりません。そして、このメソッドが何も検出しない場合、nullを返します。

したがって、への呼び出し後にレイアウトを追加する必要がありますsuper.onCreate()

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

button = (Button) findViewById(R.id.but);
// ... 
于 2012-05-24T10:48:11.167 に答える
1

レイアウトを設定する必要があります

setContentView(R.layout.main_layout);
于 2012-05-24T10:43:35.593 に答える