2015-04-23 18 views
-1

我想通過使用Java代碼而不是XML文件來運行應用程序。
該應用程序不能在我的手機/模擬器上工作,每次都會崩潰。如何在java中代替xml編寫相對佈局?

的代碼看起來是這樣的:

package com.nikhil.relativelayoutjavacode; 

import android.support.v7.app.ActionBarActivity;  
import android.os.Bundle;  
import android.view.Menu;  
import android.view.MenuItem;  
import android.widget.Button;  
import android.widget.EditText;  
import android.widget.RelativeLayout;  
import android.widget.RelativeLayout.LayoutParams;  
import android.widget.TextView;  

public class MainActivity extends ActionBarActivity { 

    RelativeLayout main; 
    EditText userNameValue, passwordValue; 
    TextView message, userName, password; 
    LayoutParams messageDimensions; 
    Button login; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     init(); 
     createMessageTextView(); 
     main.addView(message, messageDimensions); 
     setContentView(main); 
    } 

    private void init() { 
     // TODO Auto-generated method stub 
     main = new RelativeLayout(this); 
     LayoutParams mainDimensions = new LayoutParams(
       LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
     main.setLayoutParams(mainDimensions); 

     userNameValue = new EditText(this); 
     passwordValue = new EditText(this); 
     message = new TextView(this); 
     userName = new TextView(this); 
     password = new TextView(this); 
     login = new Button(this); 

    } 

    private void createMessageTextView() { 
     LayoutParams messageDimensions = new LayoutParams(
       LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
     messageDimensions.addRule(RelativeLayout.ALIGN_PARENT_LEFT); 
     message.setText("Please Login First"); 
     message.setLayoutParams(messageDimensions); 
    } 
} 
+3

檢查你的logcat,並把它張貼在這裏 –

回答

1

這裏:

main.addView(message, messageDimensions); 

messageDimensionsnull因爲名字messageDimensionscreateMessageTextView()方法創建的LayoutParams新的對象,而不是利用其在聲明messageDimensions對象職業水平。

所以,使用:

messageDimensions = new LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
      messageDimensions.addRule(RelativeLayout.ALIGN_PARENT_LEFT); 

createMessageTextView()方法。

+0

我不知道我是如何錯過了那個簡單的點..但是謝謝反正! – Nike15