android - 在 setGridViewItemClickListener 中出现错误以及如何显示可绘制的图像
问题描述
我已经为画廊或小书等图像创建了 android 应用程序GridView
,其中有 14 张图像显示来自 URL 的所有图像。ViewPager
我也想帮助如何从可绘制的图像中显示我的图像
GridView
成功打开,我能够启动应用程序。
功能也运行良好,但是当我想打开单个图像时,GridView
我的应用程序关闭并显示应用程序已停止并再次打开应用程序的消息。
请查看我的代码并指导我如何解决这个问题。这是我的代码:
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
private GridView gridView;
private GridViewAdapter gridViewAdapter;
private ArrayList<String> listImageURLs = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addImageURLs();
gridView = findViewById(R.id.gridView);
gridViewAdapter = new GridViewAdapter(this, listImageURLs);
gridView.setAdapter(gridViewAdapter);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
setGridViewItemClickListener();
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_camera) {
// Handle the camera action
} else if (id == R.id.nav_gallery) {
} else if (id == R.id.nav_slideshow) {
} else if (id == R.id.nav_manage) {
} else if (id == R.id.nav_share) {
} else if (id == R.id.nav_send) {
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
private void setGridViewItemClickListener(){
gridView.setOnItemClickListener((parent, view, position, id) -> {
Bundle bundle = new Bundle();
bundle.putInt("position", position);
bundle.putStringArrayList("imageURLs", listImageURLs);
Intent intent = new Intent(this, ImageActivity.class);
intent.putExtras(bundle);
startActivity(intent);
});
}
private void addImageURLs(){
listImageURLs.add("http://i.dailymail.co.uk/i/pix/2016/04/12/23/3319F89C00000578-3536787-image-m-19_1460498410943.jpg");
listImageURLs.add("https://www.w3schools.com/css/img_forest.jpg");
listImageURLs.add("https://www.w3schools.com/css/trolltunga.jpg");
listImageURLs.add("https://www.w3schools.com/css/pineapple.jpg");
listImageURLs.add("https://cdn.arstechnica.net/wp-content/uploads/2016/02/5718897981_10faa45ac3_b-640x624.jpg");
listImageURLs.add("https://www.w3schools.com/css/paris.jpg");
listImageURLs.add("https://www.w3schools.com/css/paris.jpg");
listImageURLs.add("https://www.w3schools.com/css/trolltunga.jpg");
listImageURLs.add("https://www.w3schools.com/css/lights600x400.jpg");
listImageURLs.add("http://wallpaper-gallery.net/images/image/image-11.jpg");
listImageURLs.add("http://wallpaper-gallery.net/images/image/image-15.jpg");
listImageURLs.add("http://wallpaper-gallery.net/images/image/image-19.jpg");
listImageURLs.add("https://cdn.spacetelescope.org/archives/images/thumb700x/heic1509a.jpg");
listImageURLs.add("http://wallpaper-gallery.net/images/image/image-12.jpg");
//listImageURLs.addAll(listImageURLs);
}
}
解决方案
您需要在 AndroidManifest 中包含 ImageActivity。
推荐阅读
- php - 删除 Symfony4/Doctrine 的外键和级联问题
- amazon-web-services - 从 pinpoint 请求旧数据
- java - Java android 在 Android API 23 上创建自定义对话框
- angular - 如何在 Angular 中以服务方法设置角度日期选择器日期格式?
- c# - mvc控制器参数在ajax调用中获取空值
- reactjs - Material UI 移除 TextField 自动填充的黄色背景
- javascript - 数据表:如何跳转到第一个空单元格
- mysql - 什么是更快/更好?更多的 SQL-Select 语句或多个详细的 sql 命令?
- c - 我希望循环复制空字符或其他内容,但它再次从头开始复制字符。这是为什么?这个循环是如何工作的?
- scroll - 在没有路由器交互的分页页面更改上滚动到页面顶部