我正在尝试根据用户在之前的活动中拖拽哪个视图来更改某个活动,但我的代码中出现了一些问题并拒绝使用。
整数存储为public static int _id,并为每个视图设置整数,如下所示:
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(150, 50);
layoutParams.leftMargin = 250;
layoutParams.topMargin = 250;
layoutParams.bottomMargin = -250;
layoutParams.rightMargin = -250;
_view.setLayoutParams(layoutParams);
_view.setOnTouchListener(this);
_view.setId(1);
然后通过此代码片段将整数发送到下一个活动。
case MotionEvent.ACTION_UP:
_id = view.getId();
Intent intent = new Intent(MainActivity.this, Exit_Activity.class);
intent.putExtra("smiley", _id);
startActivity(intent);
然后理论上应该在下一个活动中收到它,并定义屏幕顶部可见的视图。
public class Exit_Activity extends Activity {
ImageView _view;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_exit_);
getActionBar().setDisplayHomeAsUpEnabled(true);
Intent Intent = getIntent();
int intValue = Intent.getIntExtra("smiley", 0);
ImageView img = new ImageView(this);
img.setImageResource(R.drawable.smile);
if (intValue == 1) {img.setImageResource(R.drawable.smile);}
else if (intValue == 2) {img.setImageResource(R.drawable.frown);}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_exit_, menu);
return true;
}
现在,无论拖动什么视图,它似乎都无法做任何事情。任何意见都将不胜感激。
编辑:
对于奖金布朗尼积分,我正在尝试对文本做同样的事情,它看起来有点像这样: TextView textView = (TextView) findViewById(R.id.DynRes);
setContentView(R.id.DynRes);
if (intValue == 1) {DynRes.setText("Good to hear! have a nice day!");}
else
if (intValue == 2) {DynRes.appendText("We're very sorry, we'll try harder next time!");}
}
我在eclipse中遇到一个错误,说“DynRes无法解决”,我不清楚为什么。再次感谢。
答案 0 :(得分:2)
传递额外数据看起来是正确的。打印您收到的价值,看看你得到了什么。 并使用
将您的图像添加到任何父级parent.addView(img);
答案 1 :(得分:2)
它没有做任何事情的原因是因为你没有抓住现有的ImageView并对其进行操作(例如通过findViewById())。相反,你只是创建一个新的ImageView。您需要获取现有的imageview或将新创建的视图添加到contentview的视图组。
编辑:
您对如何设置Activity的内容视图以及通过id查找视图的内容有一个基本的误解。
public static final class layout
和public static final class id
。 Android资产包装工具(aapt)获取您的应用程序资源文件(以XML定义的东西)并编译它们,以便您可以在代码中引用它们。因此,例如,没有名称为Dynres的类型或变量等。所有这些都是一个公共int,你可以引用为R.id.Dynres。但是,您可以将int视为xml资源的编译表示。这让我想到了下一点。TextView tv = (TextView)findViewById(R.id.my_textview)
只是使用id来查找该视图,然后将其转换为分配给变量“tv”的TextView类型的对象,所以现在tv是您需要用来调用方法等等。所以,您的代码需要beDynRes.setText("Good to hear! have a nice day!")
答案 2 :(得分:0)
如果您在Exit_Activity中有布局,则可以使用(layout).addView(img);
或其他父母,如Sean John所说。
否则,您可以使用this.AddContentView(img,new LayoutParams(...));