英文:
My app is getting crash without any errors if I use onClickListener in ParkActivity
问题
以下是你提供的代码的翻译部分:
我是Android开发的初学者,有一个疑问,如何从第二个Activity跳转到第三个Activity。
从MainActivity:
TextView parkText = (TextView)findViewById(R.id.park);
parkText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(view.getContext(), ParkActivity.class);
startActivity(i);
}
});
从ParkActivity:
public class ParkActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.place_list);
final ArrayList<Places> parkPlaceList = new ArrayList<Places>();
parkPlaceList.add(new Places("TowerPark", R.mipmap.chennai_hdpi));
// 其他地方省略...
}
}
从Places:
package com.example.chennaitourapp;
public class Places {
private String mtextview;
private int mimageResourceId;
public Places(String textView, int imageResourceId) {
mtextview = textView;
mimageResourceId = imageResourceId;
}
// getter方法省略...
}
从PlaceAdapter:
public class PlaceAdapter extends ArrayAdapter<Places> {
public PlaceAdapter(@NonNull Context context, ArrayList<Places> parkPlacelist) {
super(context, 0, parkPlacelist);
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
// ...
return listItemView;
}
}
现在我需要从ParkActivity跳转到ParkActivity2,我创建了另一个名为ParkActivity2的Activity。
如果我从ParkActivity点击或触摸TextView,我希望能够转到ParkActivity2。我知道我需要使用OnClickListener,在MainActivity中已经完成了这一步,但我需要知道在哪里编写该代码。
实际上,我将该代码写在了ParkActivity中,但是我的应用程序崩溃了,没有任何错误信息。
英文:
I'm a beginner in Android Development and I have one doubt, How to pass from 2nd Activity into 3rd Activity
From MainActivity
TextView parkText = (TextView)findViewById(R.id.park);
parkText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(view.getContext(),ParkActivity.class);
startActivity(i);
}
});
From ParkActivity
public class ParkActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.place_list);
final ArrayList<Places> parkPlaceList = new ArrayList<Places>();
parkPlaceList.add(new Places("TowerPark",R.mipmap.chennai_hdpi));
parkPlaceList.add(new Places("TowerPark",R.mipmap.chennai_hdpi));
parkPlaceList.add(new Places("TowerPark",R.mipmap.chennai_hdpi));
parkPlaceList.add(new Places("TowerPark",R.mipmap.chennai_hdpi));
parkPlaceList.add(new Places("TowerPark",R.mipmap.chennai_hdpi));
parkPlaceList.add(new Places("TowerPark",R.mipmap.chennai_hdpi));
parkPlaceList.add(new Places("TowerPark",R.mipmap.chennai_hdpi));
PlaceAdapter itemsAdapter = new PlaceAdapter(this,parkPlaceList);
ListView placeList = (ListView)findViewById(R.id.list);
placeList.setAdapter(itemsAdapter);
}
}
From Places
package com.example.chennaitourapp;
public class Places {
private String mtextview;
private int mimageResourceId;
public Places(String textView, int imageResourceId){
mtextview = textView;
mimageResourceId = imageResourceId;
}
public String getMtextview() {
return mtextview;
}
public int getMimageResourceId() {
return mimageResourceId;
}
}
From PlaceAdapter
public class PlaceAdapter extends ArrayAdapter<Places> {
public PlaceAdapter(@NonNull Context context, ArrayList<Places>parkPlacelist) {
super(context, 0,parkPlacelist);
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View listItemView = convertView;
if (listItemView == null){
listItemView = LayoutInflater.from(getContext()).inflate(R.layout.imagepname,parent,false);
}
Places placeListPosition = getItem(position);
TextView placesName = (TextView)listItemView.findViewById(R.id.text);
placesName.setText(placeListPosition.getMtextview());
ImageView placesImage = (ImageView)listItemView.findViewById(R.id.image);
placesImage.setImageResource(placeListPosition.getMimageResourceId());
return listItemView;
Now I have to pass from ParkActivity To ParkActivity2 and I created another Activity called ParkActivity2
If I touch or click textview from ParkActivity I need to go to ParkActivity and I know I have to use onClickListener which I already done in MainActivity but I need to know where I have to write that code
Actually I wrote that code in ParkActivity but my app is getting crashed without any errors.
答案1
得分: 1
在ParkActivity
中,在设置适配器之后,为你的listView
(在你的情况下是placeList
)设置onItemClickListener。
placeList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
// 跳转到ParkActivity2
startActivity(new Intent(context, ParkActivity2.class));
}
});
如果你是手动添加的,请不要忘记在清单文件中添加你的活动。
英文:
In ParkActivity set onItemClickListener in your listView (which is placeList in your case) after setting the adapter.
placeList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//go to ParkActivity2
startActivity(new Intent(context,ParkActivity2.class));
}
});
Don't forget to add your Activity in Manifest, if you added it manually.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论