英文:
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.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论