我有2个不同的活动,但他们都有 listview 。就数据而言,我的第一项活动是空的。它只有一个按钮,可以传递给我的第二个活动。
每行在我的第二个活动中包含一个imageView,textView和checkBox。 当我在第二个活动中的任何一行激活复选框时,我想将数据发送到我的第一个活动。例如,我单击一个复选框来选择一行,当我回到第一个活动时,我应该看到这一行(使用ImageView,TextView)。实际上,另外,当复选框未激活时,我想删除第一个活动中的数据。但是,如果你帮我解决第一个问题,我想我可以找到这个解决方案。
我的第一次活动(我应该看到这里的行)
ImageView image = (ImageView) findViewById(R.id.image);
Bundle bundleObject = getIntent().getExtras();
if (bundleObject != null) {
String resultText = bundleObject.getString("RESULT_TEXT");
dbHelper.insertNewTask(resultText);
byte[] byteArray = bundleObject.getByteArray("picture");
Bitmap b = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
image.setImageBitmap(b); //ERROR IS HERE!!!!! IT ISN'T WORKING
我的第二次活动
byte[] byteArray;
Bitmap bmp;
int[] images = {R.drawable.book, R.drawable.watchingtv};
bmp = BitmapFactory.decodeResource(getResources(), R.drawable.book);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byteArray = stream.toByteArray();
class MyAdapter extends ArrayAdapter<String> implements View.OnClickListener {
Context context;
int[] images;
String[] mytitles;
MyAdapter(Context c, String[] titles, int images[]) {
super(c, R.layout.row_2, R.id.newTaskTitle, titles);
this.context = c;
this.images = images;
this.mytitles = titles;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.row_2, parent, false);
ImageView myImage = (ImageView) row.findViewById(R.id.newImage);
final TextView myTitle = (TextView) row.findViewById(R.id.newTaskTitle);
myImage.setImageResource(images[position]);
myTitle.setText(mytitles[position]);
checkBox = (CheckBox) row.findViewById(R.id.checkBox);
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Boolean durum = checkBox.isChecked();
if(durum=true){
Intent intent = new Intent (dinlenmeEkrani_newOptions.this, dinlenmeEkrani.class);
intent.putExtra("picture", byteArray);
intent.putExtra("RESULT_TEXT", myTitle.getText().toString());
startActivity(intent);
}
else{
}
}
});
return row;
}
第二项活动可能有错误。当我尝试达成解决方案时,我可能会犯一些错误。
我想说这些:我在传递textview方面取得了成功。所以,当我删除一些与Image相关的代码时(特别是在我的第一个活动中),我看到传递来自String.xml的textView。而且,我刚刚尝试过R.Drawable.book,因为如果它有效,我认为我可以添加其他绘图。
(如果你想知道dbHelper,就在这里)
public class Database extends SQLiteOpenHelper
public static final String DB_TABLE = "Task";
public static final String DB_COLUMN = "TaskName";
public void insertNewTask (String task){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(DB_COLUMN,task);
db.insertWithOnConflict(DB_TABLE,null,values, SQLiteDatabase.CONFLICT_REPLACE);
db.close();
}
答案 0 :(得分:1)
无法在活动之间共享任何视图对象,因为它们与Activity和Activities链接完全独立。您需要创建一个逻辑来识别和处理状态,只是在活动之间传递小块数据,就像您已经在使用意图一样。