用parcelable对象发送意图时我遇到了奇怪的问题.这个对象有一个String数组.使用此答案如何使用Intents将对象从一个Android Activity发送到另一个?我首先将我的对象创建为parcelable,然后发送它.这是我的代码片段:
public class MyObject implements Parcelable{
private String _title = null;
private String[] _genre;
private int _time = 0;
private String _disc = null;
private static final String TAG = "MyObject";
public MyObject (String title, String[] genre, int time, String disc) {
_title = title;
_genre = genre;
_time = time;
_disc = disc;
}
public MyObject(Parcel source) {
/*
* Reconstruct from the Parcel
*/
Log.v(TAG, "ParcelData(Parcel source): time to put back parcel data");
_title = …Run Code Online (Sandbox Code Playgroud) 我有一个名为 Data 的自定义类,其中包含所有数据。主要活动创建两个片段。我在主要活动中有一个字段,如下所示:
private Data data = new Data();
Run Code Online (Sandbox Code Playgroud)
这些片段是用这个方法创建的:
private ArrayList<Fragment> getFragments() {
ArrayList<Fragment> fragments = new ArrayList<Fragment>();
fragments.add(new fragment_one());
fragments.add(new fragment_two());
return fragments;
}
Run Code Online (Sandbox Code Playgroud)
我需要将数据字段传递给片段,以便片段可以访问数据的方法。
我尝试创建一个包,但我无法传递自定义类。我能做什么?
我已经为这样的arraylist增加了一些价值:
private List<InfoProduct> product;
product = new ArrayList<>();
product.add(new InfoProduct(R.drawable.cloth, Product_title, "0", Product_data2, lunch,R.drawable.cardview_circle_corner));
product.add(new InfoProduct(R.drawable.guitar, Product_title, "1", Product_data2, lunch,R.drawable.cardview_circle_corner));
product.add(new InfoProduct(R.drawable.cloth, Product_title, "2", Product_data2, lunch,R.drawable.cardview_circle_corner));
product.add(new InfoProduct(R.drawable.guitar, Product_title, "3", Product_data2, lunch,R.drawable.cardview_circle_corner));
product.add(new InfoProduct(R.drawable.cloth, Product_title, "4", Product_data2, lunch,R.drawable.cardview_circle_corner));
product.add(new InfoProduct(R.drawable.guitar, Product_title, "5", Product_data2, lunch,R.drawable.cardview_circle_corner));
product.add(new InfoProduct(R.drawable.cloth, Product_title, "6", Product_data2, lunch,R.drawable.cardview_circle_corner));
product.add(new InfoProduct(R.drawable.guitar, Product_title, "7", Product_data2, lunch,R.drawable.cardview_circle_corner));
product.add(new InfoProduct(R.drawable.cloth, Product_title, "8", Product_data2, lunch,R.drawable.cardview_circle_corner));
product.add(new InfoProduct(R.drawable.guitar, Product_title, "9", Product_data2, lunch,R.drawable.cardview_circle_corner));
Run Code Online (Sandbox Code Playgroud)
当我需要去其他Fragment时,我想使用Bundle来传输我的ArrayList,所以我写了一些代码来遵守这个
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment_youtube, new FragmentYoutubeProduct(), "youtube");
ft.addToBackStack("youtube");
Bundle bundle …Run Code Online (Sandbox Code Playgroud) SO上也有类似的问题,但没有一个对我有用.
我想在Activity1中获取单击的图像并在Activity2中显示它.
我正在获取点击图像的图像ID,如下所示:
((ImageView) v).getId()
Run Code Online (Sandbox Code Playgroud)
并通过意图将其传递给另一个活动.
在第二个活动中,我使用图像ID如下:
imageView.setImageResource(imgId);
Run Code Online (Sandbox Code Playgroud)
我在两个活动中记录了值og image id并且它是相同的.
但我得到以下异常:
android.content.res.Resources$NotFoundException: Resource is not a Drawable
(color or path): TypedValue{t=0x12/d=0x0 a=2 r=0x7f050000}
Run Code Online (Sandbox Code Playgroud)
我想这里的问题getId()是返回Id ImageView而不是它的源图像.
所有这些图像都存在于drawable.
任何帮助赞赏.
我有一个JSON文件,填充到一个活动(Main.java).
此活动显示来自我的JSON条目上的URL的3个随机图像.
我想做的是:我在我的JSON上有13个不同的条目,每当我点击显示的随机图片时,它转到另一个包含图片,标题和描述的活动(ProjectDetail.java)取决于我点击的项目进入JSON.
我有什么是通过使用额外的我不知道如何执行,因为我使用JSON.我应该top_listener在我的Main类的方法中添加什么以及我应该在ProjectDetail类中添加什么?
谢谢.
Main.java
public class Main extends Activity {
/** Called when the activity is first created. */
ArrayList<Project> prjcts=null;
private ImageThreadLoader imageLoader = new ImageThreadLoader();
private final static String TAG = "MediaItemAdapter";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
prjcts = new ArrayList<Project>();
WebService webService = new WebService("http://liebenwald.spendino.net/admanager/dev/android/projects.json");
Map<String, String> params = new HashMap<String, String>();
params.put("var", "");
String response = webService.webGet("", params);
try
{
Type collectionType = new TypeToken<ArrayList<Project>>(){}.getType();
List<Project> lst= new Gson().fromJson(response, …Run Code Online (Sandbox Code Playgroud) 在使用StartActivityForResult之前,我试图将某些数据附加到intent上.
当intent在OnActivityForResult中返回时,我想访问我在intent中附加的数据.因此,我可以将意图中检索到的数据与数据库条目,容器ID等相关联.
不幸的是,返回的意图似乎与我开始的意图不同.我尝试在测试用例中比较(==)旧的和新的意图,结果失败,并且毫不奇怪,我尝试追加的数据不存在.是否有任何关于原始意图的链接?
我尝试过的基本想法:
伪造代码中的StartActivityForResult代码:
Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
i.putExtra([-Key-], [int]);
i.putExtra([-Key-], [int]);
....
getParentFragment().startActivityForResult(i, requestCode);
Run Code Online (Sandbox Code Playgroud)
OnActivityResult的伪代码
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
....
switch(requestcode){
case RESULT_LOAD_IMAGE :
//These always evaluate to default. The intent returns with the picture,
//and I process it fine (with default values), but any extra data i try to append
//to the intent is lost.
int rowId = intent.getIntExtra([-Key-], [-def_value-]);
....
....
break;
default:
throw new RuntimeException();
}
}
Run Code Online (Sandbox Code Playgroud) 我在此代码上遇到错误
listObjects = (Listitem) extras.getParcelable(OBJECT_LIST);
Run Code Online (Sandbox Code Playgroud)
这就是我传递意图的方式
Intent intent = new Intent(mcontext,SingleObjectActivity.class);
intent.putParcelableArrayListExtra("Object_list", personArrayList);
// intent.putExtra("Object_list", personArrayList);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mcontext.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
这是第二个活动
public class SingleObjectActivity extends Activity
{
public static final String OBJECT_LIST = "Object_list";
private ArrayList<Listitem> Objects;
public ImageView imgview;
private Listitem listObjects;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.singleobject);
// ArrayList<Listitem> items = getIntent().getParcelableArrayListExtra("Object_list");
Bundle extras = getIntent().getExtras();
imgview = (ImageView) findViewById(R.id.funnyimage);
/* if (extras != null) {
Objects = extras.getParcelableArrayList(OBJECT_LIST);
} else {
Objects = new ArrayList<Listitem>();
}
*/ …Run Code Online (Sandbox Code Playgroud) 我是 android 编程的新手,我正在尝试将一组自定义对象发送到不同的活动。在第一个活动中,我有一个创建意图并向其添加对象数组的函数:
public void openSchedule() {
Intent nextScreen = new Intent(getApplicationContext(), Schedule.class);
nextScreen.putExtra("array", tasks);
startActivity(nextScreen);
}
Run Code Online (Sandbox Code Playgroud)
但是,我不确定如何在下一个屏幕上获取该数据。
即使“任务”是一个自定义对象数组,有没有办法在下一个活动的代码中获取该数组?