Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中将字符串转换为整数_Android_Android Wallpaper - Fatal编程技术网

在Android中将字符串转换为整数

在Android中将字符串转换为整数,android,android-wallpaper,Android,Android Wallpaper,我正在尝试在ViewPager中使用wallpermanager。我有一个按钮,用来将ViewPager中的当前图像设置为墙纸。我的问题来自代码行wallpManager.setResource(newInt)。。。它得到的整数总是0(零),因此应用程序崩溃,LogCat说ID#0x0处没有资源。为了测试我是否获得了正确的图像URL,我执行了以下操作: String newStr = images[position]; CharSequence cs = newStr; Toast.makeTe

我正在尝试在
ViewPager
中使用
wallpermanager
。我有一个按钮,用来将ViewPager中的当前图像设置为墙纸。我的问题来自代码行
wallpManager.setResource(newInt)。。。它得到的整数总是0(零),因此应用程序崩溃,LogCat说ID#0x0处没有资源。为了测试我是否获得了正确的图像URL,我执行了以下操作:

String newStr = images[position];
CharSequence cs = newStr;
Toast.makeText(UILPager.this, cs, Toast.LENGTH_SHORT).show();
最后的Toast显示了正确的图像URL。我不知道如何将“”形式的URL转换为整数,以便管理员可以使用它。下面是整个按钮代码的外观:

            wallp_BTN.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                WallpaperManager wallpManager = WallpaperManager.getInstance(getApplicationContext());


                String newStr = images[position];
                int newInt = 0;
                try{
                    newInt = Integer.parseInt(newStr);
                } catch(NumberFormatException nfe) {

                }

                CharSequence cs = newStr;
                try {
                    wallpManager.setResource(newInt);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                Toast.makeText(UILPager.this, cs, Toast.LENGTH_SHORT).show();

            }

        });

方法wallperManager.setResource()需要应用程序中的资源id。示例:我创建了id为“myImage”的ImageView,然后调用该方法将看起来像
WallperManager.setResource(R.id.myImage)

在您的情况下,您的id无效。

而不是
wallpManager.setResource(0)
您应该使用
wallpManager.setResource(R.drawable.yourimage)
,因为它需要
drawable
,而您的应用程序中没有id=0的

在代码中

String newStr = images[position];
int newInt = 0;
try{
    newInt = Integer.parseInt(newStr);
    } catch(NumberFormatException nfe) {

    }

由于
newStr
从来都不是一个数字,所以总是一个url,所以
NumberFormatException
总是被捕获。因此,
newInt
的值总是初始化为0。因此出现了错误。

我意识到我必须先下载图像,然后才能将其设置为壁纸!谢谢你的帮助,安德烈勇士和猫头鹰。当我得到下载代码后,我会发布它。Owl向我展示了如何下载壁纸:

            //--- Wallpaper button
        wallp_BTN.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                try {
                    vpURL = new URL(images[position]);
                } catch (MalformedURLException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                WallpaperManager wallpManager = WallpaperManager.getInstance(getApplicationContext());
                 try {
                        Bitmap bitmap = BitmapFactory.decodeStream(vpURL.openStream());
                        wallpManager.setBitmap(bitmap);
                        Toast.makeText(UILPager.this, "The wallpaper has been set!", Toast.LENGTH_LONG).show();
                    } catch (MalformedURLException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
            }

        });
        //--- END Wallpaper button
。。。我还知道了如何下载
ViewPager
图像(我需要在我的应用程序的不同区域下载这两种图像):

/---壁纸按钮
wallp_BTN.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串vpURLStr=图像[位置];
GetVPImageTask downloadVPImageTask=新建GetVPImageTask();
下载VPImageTask.execute(新字符串[]{vpURLStr});
}
});
//---结束墙纸按钮
//---下载ViewPager图像异步任务
私有类GetVPImageTask扩展了AsyncTask{
ProgressDialog getVPImageDia;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
getVPImageDia=新建进度对话框(UILNPPager.this);
getVPImageDia.setMessage(“抓取图像…”);
getVPImageDia.SetUndeterminate(假);
getVPImageDia.show();
}
@凌驾
受保护位图doInBackground(字符串…URL){
位图映射=空;
for(字符串url:url){
map=下载图像(url);
}
返回图;
}
//设置doInBackground返回的位图
@凌驾
受保护的void onPostExecute(位图结果){
试一试{
getVPImageDia.disclose();
getVPImageDia=null;
}捕获(例外e){
//没什么
}
Toast.makeText(UILNPPager.this,“下载图像!”,Toast.LENGTH\u SHORT.show();
//下载的_iv.setImageBitmap(结果);
}
//从InputStream创建位图并返回它
私有位图下载图像(字符串url){
位图=空;
InputStream=null;
BitmapFactory.Options bmOptions=新的BitmapFactory.Options();
bmOptions.inSampleSize=1;
试一试{
流=getHttpConnection(url);
位图=位图工厂。
解码流(流,空,bmOptions);
stream.close();
}捕获(IOE1异常){
e1.printStackTrace();
}
返回位图;
}
//建立HttpURLConnection并返回InputStream
私有InputStream getHttpConnection(字符串urlString)
抛出IOException{
InputStream=null;
URL=新URL(URL字符串);
URLConnection=url.openConnection();
试一试{
HttpURLConnection httpConnection=(HttpURLConnection)连接;
setRequestMethod(“GET”);
httpConnection.connect();
if(httpConnection.getResponseCode()==HttpURLConnection.HTTP\u确定){
stream=httpConnection.getInputStream();
}
}捕获(例外情况除外){
例如printStackTrace();
}
回流;
}
}
//---结束下载ViewPager图像异步任务

从URL设置壁纸

    try {
        URL url = new URL("http://developer.android.com/assets/images/dac_logo.png");
        Bitmap bitmap = BitmapFactory.decodeStream(url.openStream());
        wallpaperManager.setBitmap(bitmap);
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

享受=)

图像[position]
返回什么字符串?一个像你说的那样正确的URL,Owl-它只需将你的URL换成图像[position]就可以了,效果很好!
    try {
        URL url = new URL("http://developer.android.com/assets/images/dac_logo.png");
        Bitmap bitmap = BitmapFactory.decodeStream(url.openStream());
        wallpaperManager.setBitmap(bitmap);
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }