2013-04-20 33 views
0

我在我的XML表中有一堆視圖,需要在我的MainActivity.java文件中進行操作。這裏是我正在嘗試做這在我的MainActivity.java文件:無法將視圖從xml表導入到MainActivity.java中

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.EditText; 
import android.widget.ProgressBar; 

public class MainActivity extends Activity { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


} 

EditText txt_Username = (EditText) findViewById(R.id.txtView_UserName); 
EditText txt_Password = (EditText) findViewById(R.id.txtView_Password); 
Button btn_LogIn = (Button) findViewById(R.id.button_LogIn); 
CheckBox chkbox_RememberMyPassword = (CheckBox) findViewById(R.id.checkbox_RememberPassword); 
CheckBox chkbox_LogMeInAutomatically = (CheckBox) findViewById(R.id.checkbox_LogMeInAutomatically); 
ProgressBar progressbar_LogIn = (ProgressBar) findViewById(R.id.progressBar_LogIn); 

} 

這是不行的,但是當我去測試這個代碼,沒有任何的意見,甚至加載。我得到一個空白的活動背景,然後崩潰。

我把我的變量聲明放在正確的位置?我想,我很困惑。

+1

把onCreate()放在setContentView(R.layout.activity_main)後面; – Raghunandan 2013-04-20 04:25:11

+0

謝謝!那樣做了。 – 2013-04-20 04:27:19

回答

0

嘗試:

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     EditText txt_Username = (EditText) findViewById(R.id.txtView_UserName); 
     EditText txt_Password = (EditText) findViewById(R.id.txtView_Password); 
     Button btn_LogIn = (Button) findViewById(R.id.button_LogIn); 
     CheckBox chkbox_RememberMyPassword = (CheckBox) findViewById(R.id.checkbox_RememberPassword); 
     CheckBox chkbox_LogMeInAutomatically = (CheckBox) findViewById(R.id.checkbox_LogMeInAutomatically); 
     ProgressBar progressbar_LogIn = (ProgressBar) findViewById(R.id.progressBar_LogIn); 
    } 
} 

你有你的變量初始化的方法塊,這意味着它會在您活動的任何方法之前運行之外。由於findViewById()在當前充氣佈局中查找視圖,因此您的應用會因而崩潰,因爲目前沒有充氣佈局。在調用setContentView()之後,您的佈局只會膨脹。

0

嘗試這個 -

public class MainActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    EditText txt_Username = (EditText) findViewById(R.id.txtView_UserName); 
    EditText txt_Password = (EditText) findViewById(R.id.txtView_Password); 
    Button btn_LogIn = (Button) findViewById(R.id.button_LogIn); 
    CheckBox chkbox_RememberMyPassword = (CheckBox) findViewById(R.id.checkbox_RememberPassword); 
    CheckBox chkbox_LogMeInAutomatically = (CheckBox) findViewById(R.id.checkbox_LogMeInAutomatically); 
    ProgressBar progressbar_LogIn = (ProgressBar) findViewById(R.id.progressBar_LogIn); 

    } 



    } 
0

將這個代碼

EditText txt_Username = (EditText) findViewById(R.id.txtView_UserName); 
EditText txt_Password = (EditText) findViewById(R.id.txtView_Password); 
Button btn_LogIn = (Button) findViewById(R.id.button_LogIn); 
CheckBox chkbox_RememberMyPassword = (CheckBox) findViewById(R.id.checkbox_RememberPassword); 
CheckBox chkbox_LogMeInAutomatically = (CheckBox) findViewById(R.id.checkbox_LogMeInAutomatically); 
ProgressBar progressbar_LogIn = (ProgressBar) findViewById(R.id.progressBar_LogIn);`` 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    //Put the above block of code here 

} 

在Android應用活動HANDELS的UI。所以你們裏面設置UI活動的onCreate佈局

setContentView(R.layout.activity_main); 

將要初始化的組件在UI

附加功能:如果你是初學者.Read thisrefer

0

把所有的視圖成的onCreate(),但之後的setContentView(R.layout.activity_main )。 這意味着創建應用程序時創建所有視圖。