Android:在setContentView之后将值传递给view
Android新手,在将数据从活动传递到视图时遇到一些问题。对于我的活动,我有一个简单的Android onCreate方法Android:在setContentView之后将值传递给view,android,Android,Android新手,在将数据从活动传递到视图时遇到一些问题。对于我的活动,我有一个简单的Android onCreate方法 public class MyActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent inte
public class MyActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
int num = intent.getIntExtra(MainActivity.EXTRA_NUM, 0);
setContentView(R.layout.play_game); //this is a MyView class inside of a LinearLayout
//where I want to pass the value of num to MyView
MyView myView = (MyView) findViewById(R.id.myview);
myView.setNum(num);
}
}
public class MyView extends View {
protected int num;
protected int[] array;
public MyView(Context context) {
super(context);
init();
}
public MyView(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
init();
}
protected void init() {
setBackgroundResource(R.drawable.pic1);
array = new int[num];
}
public void setNum(int num) {
this.num = num;
}
}
但是,我不知道如何将值传递给MyView类(它扩展了View)。我只想发送一个整数值,视图类将在启动构造函数之前获取该整数值。通过MyActivity类的
oncreate()
中的findViewById()
获取视图id
MyView mv=(MyView) findViewById(R.id.your-view-id);
然后通过方法getdata()
其中getdata()
方法如下所示
public void getdata(int value)
{
this.value=value;
}
通过MyActivity类的
oncreate()
中的findViewById()
获取视图id
MyView mv=(MyView) findViewById(R.id.your-view-id);
然后通过方法getdata()
其中getdata()
方法如下所示
public void getdata(int value)
{
this.value=value;
}
通过MyActivity类的
oncreate()
中的findViewById()
获取视图id
MyView mv=(MyView) findViewById(R.id.your-view-id);
然后通过方法getdata()
其中getdata()
方法如下所示
public void getdata(int value)
{
this.value=value;
}
通过MyActivity类的
oncreate()
中的findViewById()
获取视图id
MyView mv=(MyView) findViewById(R.id.your-view-id);
然后通过方法getdata()
其中getdata()
方法如下所示
public void getdata(int value)
{
this.value=value;
}
setter
方法添加到您的MyView
类中
public void setNum(int num)
{
this.num=num;
}
MyActivity
中查找您的视图
MyView myView=(MyView) findViewById(R.id.ID_OF_YOURS_VIEW_IN_ACTIVITYS_LAYOUT);
setter
方法,将值设置为视图
myView.setNum(num);
setter
方法添加到您的MyView
类中
public void setNum(int num)
{
this.num=num;
}
MyActivity
中查找您的视图
MyView myView=(MyView) findViewById(R.id.ID_OF_YOURS_VIEW_IN_ACTIVITYS_LAYOUT);
setter
方法,将值设置为视图
myView.setNum(num);
setter
方法添加到您的MyView
类中
public void setNum(int num)
{
this.num=num;
}
MyActivity
中查找您的视图
MyView myView=(MyView) findViewById(R.id.ID_OF_YOURS_VIEW_IN_ACTIVITYS_LAYOUT);
setter
方法,将值设置为视图
myView.setNum(num);
setter
方法添加到您的MyView
类中
public void setNum(int num)
{
this.num=num;
}
MyActivity
中查找您的视图
MyView myView=(MyView) findViewById(R.id.ID_OF_YOURS_VIEW_IN_ACTIVITYS_LAYOUT);
setter
方法,将值设置为视图
myView.setNum(num);
MyView mv = (MyView) findviewById(R.id.myView);
mv.setData(int number);
您需要将setData公开。请确保将myview的id设置为
android:id="@+id/myView"
在xml中。setContentView之后
MyView mv = (MyView) findviewById(R.id.myView);
mv.setData(int number);
您需要将setData公开。请确保将myview的id设置为
android:id="@+id/myView"
在xml中。setContentView之后
MyView mv = (MyView) findviewById(R.id.myView);
mv.setData(int number);
您需要将setData公开。请确保将myview的id设置为
android:id="@+id/myView"
在xml中。setContentView之后
MyView mv = (MyView) findviewById(R.id.myView);
mv.setData(int number);
您需要将setData公开。请确保将myview的id设置为
android:id="@+id/myView"
在xml中。您有几个选项: 从init()中删除数组的初始化,或者像其他人建议的那样为它指定一个默认值以避免错误。这取决于具有默认值的数组在您的上下文中是否有意义。最后用setter注入数字 您还可以定义一个静态方法,用于在调用视图构造函数之前设置活动中的数字(在使用findViewById()膨胀视图之前执行此操作)。但从生成的角度来看,这是一种不好的做法,应该在特定情况下使用
真正的问题可能是:init()调用在构造函数中有意义吗?数组必须在视图构造时设置?以后不能初始化吗 您有几种选择: 从init()中删除数组的初始化,或者像其他人建议的那样为它指定一个默认值以避免错误。这取决于具有默认值的数组在您的上下文中是否有意义。最后用setter注入数字 您还可以定义一个静态方法,用于在调用视图构造函数之前设置活动中的数字(在使用findViewById()膨胀视图之前执行此操作)。但从生成的角度来看,这是一种不好的做法,应该在特定情况下使用
真正的问题可能是:init()调用在构造函数中有意义吗?数组必须在视图构造时设置?以后不能初始化吗 您有几种选择: 从init()中删除数组的初始化,或者像其他人建议的那样为它指定一个默认值以避免错误。这取决于具有默认值的数组在您的上下文中是否有意义。最后用setter注入数字 您还可以定义一个静态方法,用于在调用视图构造函数之前设置活动中的数字(在使用findViewById()膨胀视图之前执行此操作)。但从生成的角度来看,这是一种不好的做法,应该在特定情况下使用
真正的问题可能是:init()调用在构造函数中有意义吗?数组必须在视图构造时设置?以后不能初始化吗 您有几种选择: 从init()中删除数组的初始化,或者像其他人建议的那样为它指定一个默认值以避免错误。这取决于具有默认值的数组在您的上下文中是否有意义。最后用setter注入数字 您还可以定义一个静态方法,用于在调用视图构造函数之前设置活动中的数字(在使用findViewById()膨胀视图之前执行此操作)。但从生成的角度来看,这是一种不好的做法,应该在特定情况下使用
真正的问题可能是:init()调用在构造函数中有意义吗?数组必须在视图构造时设置?以后不能初始化吗 MyView类在哪里?如果不想在视图中添加setter,可以直接从视图的intent中获取该值。在自定义视图中,使用
int num=((活动)上下文).getIntent().getIntExtra(MainActivity.EXTRA_num,0)代码>MyView类在哪里?如果不想在视图中添加setter,可以直接从视图的intent中获取该值。在自定义视图中,使用int num=((活动)上下文).getIntent().getIntExtra(MainActivity.EX