gpt4 book ai didi

java - 在 Activity 之间传递 ResourceId 作为整数

转载 作者:行者123 更新时间:2023-12-02 06:03:07 25 4
gpt4 key购买 nike

我使用 putInt() 将 ResourceId 作为整数从 CreateActivity 传递到 MainActivity;我希望能够将可绘制对象从一个 Activity 传递到另一个 Activity 。

我应该如何引用该 ResourceId 来获取与其关联的可绘制对象?或者我应该考虑将图像转换为位图,并以这种方式传递它?

LOGCAT

03-19 11:59:41.353: E/AndroidRuntime(5566): FATAL EXCEPTION: main
03-19 11:59:41.353: E/AndroidRuntime(5566): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=100, result=-1, data=Intent { cmp=com.example.datetracker/.MainActivity (has extras) }} to activity {com.example.datetracker/com.example.datetracker.MainActivity}: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x12/d=0x0 a=3 r=0x7f090006}

主要 Activity

public class MainActivity extends FragmentActivity implements OnClickListener {

ListView listView;
int lastIndex = -1;
ArrayList<Event> lstEvents = new ArrayList<Event>();

// detail view
TextView tvTitle, tvTime, tvDate;
ImageView ivPic;
View vw_master;

boolean _isBack = true;

ImageButton add;

String title;
String date;
String time;
int resId;

static final int PICK_CONTACT_REQUEST = 0;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

// // get detail controls
tvTitle = (TextView) findViewById(R.id.textViewTitle);
tvDate = (TextView) findViewById(R.id.textViewDate);
tvTime = (TextView) findViewById(R.id.textViewTime);
ivPic = (ImageView) findViewById(R.id.imageView1);

add = (ImageButton) findViewById(R.id.add);
add.setOnClickListener(this);

}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.add:
Intent intent = new Intent(this, CreateActivity.class);
startActivityForResult(intent, 100);
break;
}
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

// Create the adapter to convert the array to views
EventAdapter adapter = new EventAdapter(this, lstEvents);

// attach adapter to a list view
listView = (ListView) findViewById(R.id.listViewFragment);
listView.setAdapter(adapter);

if (requestCode == 100) {
if (resultCode == RESULT_OK) {
Bundle b = data.getExtras();
title = b.getString("TITLE");
time = b.getString("TIME");
date = b.getString("DATE");

// retrieving resId, creating drawable

// resId = b.getInt("DRAWABLE");
//Log.e("RESIDRESIED", "DRAWABLE " + resId);
Drawable img = getResources().getDrawable(R.id.btn_picture);

/////

Log.e("TITLE", title);
Log.e("TIME", time);
Log.e("DATE", date);

Event newEvent = new Event();
newEvent.set_date(date);
newEvent.set_title(title);
newEvent.set_time(time);

// set drawable
newEvent.set_drawable(img);

lstEvents.add(newEvent);

adapter.addAll(lstEvents);
adapter.notifyDataSetChanged();
}
}

}

}

创建 Activity

public class CreateActivity extends Activity implements OnClickListener {

EditText etTitle;
Button btDate;
Button btTime;
Button btPic;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

//onclicklistener
findViewById(R.id.btn_confirm).setOnClickListener(this);
findViewById(R.id.btn_back).setOnClickListener(this);

etTitle = (EditText) findViewById(R.id.editTextTitle);
btDate = (Button) findViewById(R.id.btn_date);
btTime = (Button) findViewById(R.id.btn_time);
btPic = (Button) findViewById(R.id.btn_picture);

}

// Will be called via the onClick attribute
// of the buttons in main.xml
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_confirm:
String title = etTitle.getText().toString();
String time = btTime.getText().toString();
String date = btDate.getText().toString();

//int resId = getResources().getInteger(R.id.btn_picture);
int resId = R.id.btn_picture;

Log.e("LOG", title);
Log.e("LOG", time);
Log.e("LOG", date);

Bundle newBundle = new Bundle();
newBundle.putString("TITLE", title);
newBundle.putString("TIME", time);
newBundle.putString("DATE", date);

//Trying to pass a drawable from one activity to another
newBundle.putInt("DRAWABLE", resId);

Intent intent = new Intent(this, MainActivity.class);
intent.putExtras(newBundle);

setResult(RESULT_OK, intent);

finish();

break;

case R.id.btn_back:
finish();
break;
}

}

public void showTimePickerDialog(View v) {
DialogFragment newFragment = new TimePickerFragment();
newFragment.show(getFragmentManager(), "timePicker");
}

public void showDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "datePicker");
}

public void showPicturePickerDialog(View v) {
DialogFragment newFragment = new PicturePickerFragment();
newFragment.show(getFragmentManager(), "picturePicker");
}

}

最佳答案

Drawable img = getResources().getDrawable(R.id.btn_picture); 

这是错误的。

Drawables 通过 R.drawable.xyz 访问,R.id.xyz 用于布局 ID。

资源 ID 只是一个 int,因此只需将 int 从一个 Activity 传递到另一个 Activity 即可。

关于java - 在 Activity 之间传递 ResourceId 作为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22511563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com