2015-04-23 48 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