2012-05-24 3 views
3
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()"); 
    } 
} 

Это простая активность, которая вносится перед другой деятельностью с помощью IntentAndroid findviewbyid активность() является нулевым

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

После запуска кода мой файл LogCat говорит «кнопка нулевой» Почему? ??

+2

где ваш setContentView()? –

+2

Где находится 'setContentView()' mehtod? – Praveenkumar

+1

Зачем мне это нужно ??? – Anjanu

ответ

12

Как и другие заявили, что вы не установили макет перед вызова findViewById() через setContentView().

Зачем мне это нужно?

Потому что Activity.findViewById() ищет во взглядах hierachy текущей деятельности. Если вы не зададите иерархию взглядов, найти нечего. И когда этот метод ничего не находит, он возвращает null.

Поэтому вы должны добавить макет после вызова super.onCreate()

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

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

Thankyou alextsc ... я понятия не имел, что сделал setContentView(), поскольку я думал, что он только активирует активность впереди ... SOLVED – Anjanu

+0

@ user1414679 - да приветствуется StackOverflow :) – Neil

1

Вы должны установить макет

setContentView(R.layout.main_layout); 
+0

Вы должны указать, где в коде разместить это и почему необходимо исправить вопрос плаката. Оригинальному плакату было бы сложно определить, что делать с этим утверждением, если вы просто скажете это. – CapturedTree

0

Следующий код решает эту проблему (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(); 

     ... 
    } 
Смежные вопросы