我可以使用的setContentView的onCreate方法外? [英] Can I use setContentView outside the oncreate method?
问题描述
我看到很多人告诉你可以在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:机器人=http://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屋!