我可以使用的setContentView的onCreate方法外? [英] Can I use setContentView outside the oncreate method?

查看:196
本文介绍了我可以使用的setContentView的onCreate方法外?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我看到很多人告诉你可以在onCreate方法外设置的setContentView,但我没有找到任何地方的一个例子。现在,当我尝试使用的setContentView,我的应用程序只是崩溃。下面是我的源$ C ​​$ C:

AlarmActivity.java:

 包com.alarm.example;

进口android.app.Activity;
进口android.os.Bundle;
进口android.view.View;
进口android.view.ViewGroup.LayoutParams;
进口android.widget.Button;
进口android.widget.RelativeLayout;

公共类AlarmActivity延伸活动{
    @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        按钮布顿=新的按钮(这一点);
        buton.setId(101);
        buton.setText(新报警);
        buton.setLayoutParams(新的LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
        RelativeLayout的布局1 =新RelativeLayout的(这一点);
        layout1.setLayoutParams(新的LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
    layout1.addView(布顿);
    的setContentView(布局1);

    按钮诺坎普=(按钮)findViewById(101);
    nou.setOnClickListener(新View.OnClickListener(){
        @覆盖
        公共无效的onClick(视图v){
            New_ala nou1 =新New_ala();
            nou1.nou_alarma();
            }
        });
    }
}
 

New_ala.java:

 包com.alarm.example;

公共类New_ala扩展AlarmActivity {
公共无效nou_alarma(){
的setContentView(R.layout.timepicker);
}
}
 

TimePicker.xml:

 < XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =FILL_PARENT
    机器人:方向=垂直>


    < TimePicker
        机器人:ID =@ + ID / timePicker
        机器人:layout_width =FILL_PARENT
        机器人:layout_height =WRAP_CONTENT/>

    <的LinearLayout
        机器人:layout_height =WRAP_CONTENT
        机器人:layout_width =FILL_PARENT
        机器人:layout_alignParentBottom =真正的>

        <按钮
        机器人:ID =@ + ID / picker_save
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT
        机器人:layout_weight =1
        机器人:文本=保存>
        < /按钮>

        <按钮
        机器人:ID =@ + ID / picker_cancel
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT
        机器人:layout_weight =1
        机器人:文本=取消>
        < /按钮>
< / LinearLayout中>

< / LinearLayout中>
 

在更多的细节,我可以使用的setContentView(R.layout.timepicker)的onCreate方法里面没有任何问题,所以问题是,的setContentView工作不正常的New_ala.java类中。谁能帮我?

设置的意图后,code: AlarmActivity:

 包com.alarm.example;
进口android.app.Activity;
进口android.content.Intent;
进口android.os.Bundle;
公共类AlarmActivity延伸活动{
    @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        startActivity(新意图(这一点,NewAlarmActivity.class));
        }
    }
 

NewAlarmActivity:

 包com.alarm.example;
进口android.os.Bundle;
公共类NewAlarmActivity扩展AlarmActivity {

公共无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.timepicker);
}
    }
 

解决方案

要做到这一点,最好的办法是有多个活动:代替 nou1.nou_alarma(); ,创建一个意图,并开始一个新的活动与新的布局。

  startActivity(新意图(这一点,NewAlarmActivity.class));
 

而在 NewAlarmActivity 的onCreate 方法,设置内容以研究。 layout.timepicker

I have seen many people telling that you can set setContentView outside the oncreate method, but I didn't find anywhere an example. Now when I try to use setContentView, my app just crashes. Here is my source code:

AlarmActivity.java:

package com.alarm.example;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.RelativeLayout;

public class AlarmActivity extends Activity{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Button buton = new Button(this);
        buton.setId(101);
        buton.setText("New alarm");
        buton.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
        RelativeLayout layout1 = new RelativeLayout(this);  
        layout1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));  
    layout1.addView(buton);  
    setContentView(layout1); 

    Button nou =(Button)findViewById(101);
    nou.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            New_ala nou1=new New_ala();
            nou1.nou_alarma();
            }
        });
    }
}

New_ala.java:

package com.alarm.example;

public class New_ala extends AlarmActivity{
public void nou_alarma() {
setContentView(R.layout.timepicker);        
}
}

TimePicker.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >


    <TimePicker
        android:id="@+id/timePicker"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <LinearLayout 
        android:layout_height="wrap_content" 
        android:layout_width="fill_parent" 
        android:layout_alignParentBottom="true">

        <Button 
        android:id="@+id/picker_save" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:text="Save">
        </Button>

        <Button 
        android:id="@+id/picker_cancel" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:layout_weight="1" 
        android:text="Cancel">
        </Button>
</LinearLayout>

</LinearLayout>

On more detail, I can use setContentView(R.layout.timepicker) inside the oncreate method without any problems so the problem is that setContentView isn't working properly inside the New_ala.java class. Can anyone help me?

The code after setting the intent: AlarmActivity:

package com.alarm.example;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class AlarmActivity extends Activity{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        startActivity(new Intent(this, NewAlarmActivity.class));
        }
    }

NewAlarmActivity:

package com.alarm.example;
import android.os.Bundle;
public class NewAlarmActivity extends AlarmActivity{

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.timepicker);
}
    }

解决方案

The best way to do that is to have multiple activities: instead of nou1.nou_alarma();, create an intent and start a new activity with the new layout.

startActivity(new Intent(this, NewAlarmActivity.class));

And in the onCreate method of NewAlarmActivity, set the content view to R.layout.timepicker

这篇关于我可以使用的setContentView的onCreate方法外?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆