PDA

View Full Version : مشکل با imageButton



rezaeade
شنبه 17 مهر 1395, 15:46 عصر
سلام دوستان خسته نباشید.دوستان من یه پروژه پیدا کردم میخوام بهش یه imageButton اضافه کنم ولی وقتی کد رو اضافه میکنم و روی imageButton میرنم هیچ واکنشی نشون نمیده لطفا اگر میشه یه نگاه به کد بندازید و راهنماییم کنید که کد imageButtonرو کجای کد پایین بزارم که کار کنه.

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import com.android.waller.R;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.nostra13.universalimageloader.core.DisplayImag eOptions;
import com.nostra13.universalimageloader.core.ImageLoader ;
import com.nostra13.universalimageloader.core.ImageLoader Configuration;
import com.nostra13.universalimageloader.core.assist.Fail Reason;
import com.nostra13.universalimageloader.core.assist.Imag eScaleType;
import com.nostra13.universalimageloader.core.assist.Simp leImageLoadingListener;
import com.nostra13.universalimageloader.core.display.Fad eInBitmapDisplayer;
import com.solodroid.materialwallpaper.DatabaseHandler.Da tabaseManager;


import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeList ener;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.Toast;


public class SlideImageActivity extends ActionBarActivity implements SensorEventListener {

int position;
String[] mAllImages,mAllImageCatName,mAllItemId;

public DatabaseHandler db;
ImageView vp_imageview;
ViewPager viewpager;
int TOTAL_IMAGE;
private SensorManager sensorManager;
private boolean checkImage = false;
private long lastUpdate;
Handler handler;
Runnable Update;
boolean Play_Flag=false;
private Menu menu;
private DatabaseManager dbManager;
String Image_catName,Image_Url;
Bitmap bgr;
DisplayImageOptions options;
private AdView mAdView;
Toolbar toolbar;

@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.image_slider);


toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(tr ue);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setTitle("Gallery");


db = new DatabaseHandler(this);
dbManager = DatabaseManager.INSTANCE;
dbManager.init(getApplicationContext());


options = new DisplayImageOptions.Builder()
.showImageForEmptyUri(R.drawable.ic_launcher)
.showImageOnFail(R.drawable.ic_launcher)
.resetViewBeforeLoading(true)
.cacheOnDisc(true)
.imageScaleType(ImageScaleType.EXACTLY)
.bitmapConfig(Bitmap.Config.RGB_565)
.considerExifParams(true)
.displayer(new FadeInBitmapDisplayer(300))
.build();

//setTitle(Constant.CATEGORY_TITLE);
// Look up the AdView as a resource and load a request.
mAdView = (AdView) findViewById(R.id.adView);
mAdView.loadAd(new AdRequest.Builder().build());

Intent i=getIntent();
position=i.getIntExtra("POSITION_ID", 0);
mAllImages=i.getStringArrayExtra("IMAGE_ARRAY");
mAllImageCatName=i.getStringArrayExtra("IMAGE_CATNAME");
mAllItemId=i.getStringArrayExtra("ITEMID");

TOTAL_IMAGE=mAllImages.length-1;
viewpager=(ViewPager)findViewById(R.id.image_slide r);
handler=new Handler();


ImagePagerAdapter adapter = new ImagePagerAdapter();
viewpager.setAdapter(adapter);
viewpager.setCurrentItem(position);

sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
lastUpdate = System.currentTimeMillis();

viewpager.setOnPageChangeListener(new OnPageChangeListener() {

@Override
public void onPageSelected(int position) {
// TODO Auto-generated method stub

position=viewpager.getCurrentItem();
Image_Url=mAllImages[position];

List<Pojo> pojolist=db.getFavRow(Image_Url);
if(pojolist.size()==0)
{
menu.getItem(0).setIcon(getResources().getDrawable (R.drawable.ic_star_outline));​
}
else
{
if(pojolist.get(0).getImageurl().equals(Image_Url) )
{
menu.getItem(0).setIcon(getResources().getDrawable (R.drawable.ic_star_white));
}

}

}

@Override
public void onPageScrolled(int arg0, float arg1, int position) {
// TODO Auto-generated method stub

}

@Override
public void onPageScrollStateChanged(int position) {
// TODO Auto-generated method stub

}
});

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.photo_menu, menu);
this.menu = menu;
//for when 1st item of view pager is favorite mode
FirstFav();
return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem menuItem)
{
switch (menuItem.getItemId())
{
case android.R.id.home:
onBackPressed();
return true;

case R.id.menu_back:

position=viewpager.getCurrentItem();
position--;
if (position < 0) {
position = 0;
}
viewpager.setCurrentItem(position);

return true;

case R.id.menu_next:

position=viewpager.getCurrentItem();
position++;
if (position == TOTAL_IMAGE) {
position = TOTAL_IMAGE;
}
viewpager.setCurrentItem(position);

return true;



case R.id.menu_fav:

position=viewpager.getCurrentItem();

Image_Url=mAllImages[position];

List<Pojo> pojolist=db.getFavRow(Image_Url);
if(pojolist.size()==0)
{
AddtoFav(position);//if size is zero i.e means that record not in database show add to favorite
}
else
{
if(pojolist.get(0).getImageurl().equals(Image_Url) )
{
RemoveFav(position);
}

}


return true;


case R.id.menu_share:

position=viewpager.getCurrentItem();

(new ShareTask(SlideImageActivity.this)).execute(Consta nt.SERVER_IMAGE_DETAILS+mAllIm​ages[position]);


return true;

case R.id.menu_save:

position=viewpager.getCurrentItem();

(new SaveTask(SlideImageActivity.this)).execute(Constan t.SERVER_IMAGE_DETAILS+mAllIma​ges[position]);

return true;

case R.id.menu_setaswallaper:

position=viewpager.getCurrentItem();
Intent intwall=new Intent(getApplicationContext(),SetAsWallpaperActiv ity.class);
intwall.putExtra("WALLPAPER_IMAGE_URL", mAllImages);
intwall.putExtra("WALLPAPER_IMAGE_CATEGORY", mAllImageCatName);
intwall.putExtra("POSITION_ID", position);
startActivity(intwall);

return true;

case R.id.menu_zoom:
position=viewpager.getCurrentItem();
Intent intzoom=new Intent(getApplicationContext(),PinchZoom.class);
intzoom.putExtra("ZOOM_IMAGE_URL", mAllImages);
intzoom.putExtra("ZOOM_IMAGE_CATEGORY", mAllImageCatName);
intzoom.putExtra("POSITION_ID", position);
startActivity(intzoom);

return true;

default:
return super.onOptionsItemSelected(menuItem);
}

}

//add to favorite
public void AddtoFav(int position)
{

Image_catName=mAllImageCatName[position];
Image_Url=mAllImages[position];

db.AddtoFavorite(new Pojo(Image_catName, Image_Url));
Toast.makeText(getApplicationContext(), "Added to Favorite", Toast.LENGTH_SHORT).show();
menu.getItem(0).setIcon(getResources().getDrawable (R.drawable.ic_star_white​));
}

//remove from favorite
public void RemoveFav(int position)
{
Image_Url=mAllImages[position];
db.RemoveFav(new Pojo(Image_Url));
Toast.makeText(getApplicationContext(), "Removed from Favorite", Toast.LENGTH_SHORT).show();
menu.getItem(0).setIcon(getResources().getDrawable (R.drawable.ic_star_outli​ne));

}


//auto play slide show

public void AutoPlay()
{
Update=new Runnable() {

@Override
public void run() {
AutoPlay();
// TODO Auto-generated method stub
position=viewpager.getCurrentItem();
position++;
if (position == TOTAL_IMAGE) {
position = TOTAL_IMAGE;
handler.removeCallbacks(Update);//when last image play mode goes to Stop
Toast.makeText(getApplicationContext(), "Last Image Auto Play Stoped", Toast.LENGTH_SHORT).show();
menu.getItem(0).setIcon(getResources().getDrawable (R.drawable.ic_play));
Play_Flag=false;
//Show All Menu when Auto Play Stop
ShowMenu();
}
viewpager.setCurrentItem(position);

}
};

handler.postDelayed(Update, 1500);
}

public void ShowMenu()
{
menu.getItem(0).setVisible(true);
menu.getItem(2).setVisible(true);
menu.getItem(0).setVisible(true);
menu.getItem(4).setVisible(true);
}

public void HideMenu()
{
menu.getItem(0).setVisible(false);
menu.getItem(2).setVisible(false);
menu.getItem(0).setVisible(false);
menu.getItem(4).setVisible(false);
}

public void FirstFav()
{
int first=viewpager.getCurrentItem();
String Image_id=mAllImages[first];

List<Pojo> pojolist=db.getFavRow(Image_id);
if(pojolist.size()==0)
{
menu.getItem(0).setIcon(getResources().getDrawable (R.drawable.ic_star_outline));​

}
else
{
if(pojolist.get(0).getImageurl().equals(Image_id))
{
menu.getItem(0).setIcon(getResources().getDrawable (R.drawable.ic_star_white));

}

}
}
private class ImagePagerAdapter extends PagerAdapter {

private LayoutInflater inflater;

public ImagePagerAdapter() {
// TODO Auto-generated constructor stub

inflater = getLayoutInflater();
}

@Override
public int getCount() {
return mAllImages.length;

}


@Override
public boolean isViewFromObject(View view, Object object) {
return view.equals(object);
}


@Override
public Object instantiateItem(ViewGroup container, int position) {


View imageLayout = inflater.inflate(R.layout.viewpager_item, container, false);
assert imageLayout != null;
ImageView imageView = (ImageView) imageLayout.findViewById(R.id.image);
final ProgressBar spinner = (ProgressBar) imageLayout.findViewById(R.id.loading);

ImageLoader.getInstance().init(ImageLoaderConfigur ation.createDefault(getApplica​tionContext()));
ImageLoader.getInstance().displayImage(Constant.SE RVER_IMAGE_DETAILS+mAllImages[position], imageView, options, new SimpleImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
spinner.setVisibility(View.VISIBLE);
}


@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
String message = null;
switch (failReason.getType()) {
case IO_ERROR:
message = "Input/Output error";
break;
case DECODING_ERROR:
message = "Image can't be decoded";
break;
case NETWORK_DENIED:
message = "Downloads are denied";
break;
case OUT_OF_MEMORY:
message = "Out Of Memory error";
break;
case UNKNOWN:
message = "Unknown error";
break;
}
Toast.makeText(SlideImageActivity.this, message, Toast.LENGTH_SHORT).show();


spinner.setVisibility(View.GONE);
}


@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
spinner.setVisibility(View.GONE);
}
});

container.addView(imageLayout, 0);
return imageLayout;

}


@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((View) object);
}
}


@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
// TODO Auto-generated method stub

}




@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub

if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
getAccelerometer(event);
}

}
private void getAccelerometer(SensorEvent event) {
float[] values = event.values;
// Movement
float x = values[0];
float y = values[1];
float z = values[2];


float accelationSquareRoot = (x * x + y * y + z * z)
/ (SensorManager.GRAVITY_EARTH * SensorManager.GRAVITY_EARTH);
long actualTime = System.currentTimeMillis();
if (accelationSquareRoot >= 2) //
{
if (actualTime - lastUpdate < 200) {
return;
}
lastUpdate = actualTime;
// Toast.makeText(this, "Device was shuffed", Toast.LENGTH_SHORT)
// .show();
if (checkImage) {


position=viewpager.getCurrentItem();
viewpager.setCurrentItem(position);




} else {

position=viewpager.getCurrentItem();
position++;
if (position == TOTAL_IMAGE) {
position = TOTAL_IMAGE;
}
viewpager.setCurrentItem(position);
}
checkImage = !checkImage;
}
}



@Override
protected void onResume() {
super.onResume();
// register this class as a listener for the orientation and
// accelerometer sensors
if(dbManager == null){
dbManager = DatabaseManager.INSTANCE;
dbManager.init(getApplicationContext());
}else if(dbManager.isDatabaseClosed()){
dbManager.init(getApplicationContext());
}
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELER OMETER),
SensorManager.SENSOR_DELAY_NORMAL);
}


@Override
protected void onPause() {
// unregister listener
super.onPause();
if(!dbManager.isDatabaseClosed())
dbManager.closeDatabase();
sensorManager.unregisterListener(this);
}
@Override
public void onDestroy() {
super.onDestroy();
handler.removeCallbacks(Update);
sensorManager.unregisterListener(this);
if(dbManager != null)dbManager.closeDatabase();


}

public class SaveTask extends AsyncTask<String , String , String>
{
private Context context;
private ProgressDialog pDialog;
String image_url;
URL myFileUrl;
String myFileUrl1;
Bitmap bmImg = null;
File file ;


public SaveTask(Context context) {
this.context = context;
}


@Override
protected void onPreExecute() {
// TODO Auto-generated method stub


super.onPreExecute();


pDialog = new ProgressDialog(context);
pDialog.setMessage("Downloading Image ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();


}


@Override
protected String doInBackground(String... args) {
// TODO Auto-generated method stub


try {


myFileUrl = new URL(args[0]);
//myFileUrl1 = args[0];


HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
bmImg = BitmapFactory.decodeStream(is);
}
catch (IOException e)
{
e.printStackTrace();
}
try {


String path = myFileUrl.getPath();
String idStr = path.substring(path.lastIndexOf('/') + 1);
File filepath = Environment.getExternalStorageDirectory();
File dir = new File (filepath.getAbsolutePath() + "/Android Wallpaper/");
dir.mkdirs();
String fileName = idStr;
file = new File(dir, fileName);
FileOutputStream fos = new FileOutputStream(file);
bmImg.compress(CompressFormat.JPEG, 75, fos);
fos.flush();
fos.close();


}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}




@Override
protected void onPostExecute(String args) {
// TODO Auto-generated method stub
Toast.makeText(SlideImageActivity.this, "Image Saved Succesfully Android Wallpaper Folder/", Toast.LENGTH_SHORT).show();
pDialog.dismiss();
}
}

public class ShareTask extends AsyncTask<String , String , String>
{
private Context context;
private ProgressDialog pDialog;
String image_url;
URL myFileUrl;
String myFileUrl1;
Bitmap bmImg = null;
File file ;


public ShareTask(Context context) {
this.context = context;
}


@Override
protected void onPreExecute() {
// TODO Auto-generated method stub


super.onPreExecute();


pDialog = new ProgressDialog(context);
pDialog.setMessage("Please Wait ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();


}


@Override
protected String doInBackground(String... args) {
// TODO Auto-generated method stub


try {


myFileUrl = new URL(args[0]);
//myFileUrl1 = args[0];


HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
bmImg = BitmapFactory.decodeStream(is);
}
catch (IOException e)
{
e.printStackTrace();
}
try {


String path = myFileUrl.getPath();
String idStr = path.substring(path.lastIndexOf('/') + 1);
File filepath = Environment.getExternalStorageDirectory();
File dir = new File (filepath.getAbsolutePath() + "/Android Wallpaper/");
dir.mkdirs();
String fileName = idStr;
file = new File(dir, fileName);
FileOutputStream fos = new FileOutputStream(file);
bmImg.compress(CompressFormat.JPEG, 75, fos);
fos.flush();
fos.close();


}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}




@Override
protected void onPostExecute(String args) {
// TODO Auto-generated method stub

Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/jpeg");
share.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + file.getAbsolutePath()));
startActivity(Intent.createChooser(share, "Share Image"));
pDialog.dismiss();
}
}

}

msroid
شنبه 17 مهر 1395, 19:11 عصر
سلام

اول اینکه باید یه ImageView توی لایوت image_slider قرار بدی. بعدش باید توی متد onCreate مقدار دهیش کنی. مثلا کدهات رو میتونی توی خط 88، 92 یا 104 بذاری.

rezaeade
شنبه 17 مهر 1395, 22:55 عصر
سلام دوست عزیز ممنون از راهنمایتون کاری که گفتید انجام دادم ولی وقتی کد رو میزارم , و روی imageView کلیک میکنم برنامه ارور میده
من این کد رو میزارم
imgClick =(ImageView) findViewById(R.id.imageView1);

imgClick.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
startActivity(new Intent(SlideImageActivity.this, SetAsWallpaperActivity.class));
}
});
لظفا اگر میشه راهنماییم کنید

msroid
شنبه 17 مهر 1395, 23:16 عصر
اکتیویتی SetAsWallpaperActivity رو توی manifest معرفی کردی...؟؟

rezaeade
شنبه 17 مهر 1395, 23:22 عصر
اره معرفی کردم . من از طریق منو میتونم برم به
SetAsWallpaperActivity ولی از طریق image button , imageView نمیتونم وقتی روشون کلیک میکنم برنامه ارور میده

msroid
شنبه 17 مهر 1395, 23:28 عصر
خب متن ارور رو از توی LogCat کپی کن و اینجا بذار. فقط وقتی کپی کردی اول یه بار توی Notepad پیست کن بعد دوباره از اونجا کپی کن اینجا پیست کن تا استایل های نوشته ها از بین بره.

rezaeade
شنبه 17 مهر 1395, 23:34 عصر
والا این ارور هایی که تو log cat نشون داده. کدی که استفاده میکنم برای فراخوانی اشتباع تیست؟

10-09 00:02:25.190: E/AndroidRuntime(5616): FATAL EXCEPTION: main
10-09 00:02:25.190: E/AndroidRuntime(5616): Process: com.android.waller, PID: 5616
10-09 00:02:25.190: E/AndroidRuntime(5616): Theme: themes:{default=overlay:com.ngocgiap.xperia, iconPack:com.ngocgiap.xperia, fontPkg:com.ngocgiap.xperia, com.android.systemui=overlay:com.ngocgiap.xperia, com.android.systemui.navbar=overlay:com.ngocgiap.x peria}
10-09 00:02:25.190: E/AndroidRuntime(5616): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.android.waller/com.solodroid.materialwallpaper.Activity_About}; have you declared this activity in your AndroidManifest.xml?
10-09 00:02:25.190: E/AndroidRuntime(5616): at android.app.Instrumentation.checkStartActivityResu lt(Instrumentation.java:1801)
10-09 00:02:25.190: E/AndroidRuntime(5616): at android.app.Instrumentation.execStartActivity(Inst rumentation.java:1514)
10-09 00:02:25.190: E/AndroidRuntime(5616): at android.app.Activity.startActivityForResult(Activi ty.java:3930)
10-09 00:02:25.190: E/AndroidRuntime(5616): at android.app.Activity.startActivityForResult(Activi ty.java:3890)
10-09 00:02:25.190: E/AndroidRuntime(5616): at android.support.v4.app.FragmentActivity.startActiv ityForResult(FragmentActivity.java:820)
10-09 00:02:25.190: E/AndroidRuntime(5616): at android.app.Activity.startActivity(Activity.java:4 213)
10-09 00:02:25.190: E/AndroidRuntime(5616): at android.app.Activity.startActivity(Activity.java:4 181)
10-09 00:02:25.190: E/AndroidRuntime(5616): at com.solodroid.materialwallpaper.SlideImageActivity $1.onClick(SlideImageActivity.java:102)
10-09 00:02:25.190: E/AndroidRuntime(5616): at android.view.View.performClick(View.java:5204)
10-09 00:02:25.190: E/AndroidRuntime(5616): at android.view.View$PerformClick.run(View.java:21158 )
10-09 00:02:25.190: E/AndroidRuntime(5616): at android.os.Handler.handleCallback(Handler.java:739 )
10-09 00:02:25.190: E/AndroidRuntime(5616): at android.os.Handler.dispatchMessage(Handler.java:95 )
10-09 00:02:25.190: E/AndroidRuntime(5616): at android.os.Looper.loop(Looper.java:148)
10-09 00:02:25.190: E/AndroidRuntime(5616): at android.app.ActivityThread.main(ActivityThread.jav a:5461)
10-09 00:02:25.190: E/AndroidRuntime(5616): at java.lang.reflect.Method.invoke(Native Method)
10-09 00:02:25.190: E/AndroidRuntime(5616): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:726)
10-09 00:02:25.190: E/AndroidRuntime(5616): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:616)

msroid
شنبه 17 مهر 1395, 23:37 عصر
این ارور داره میگه یه اکتیویتی به نام Activity_about رو نمیتونه پیدا کنه واسه همین داره ارور میده

rezaeade
شنبه 17 مهر 1395, 23:43 عصر
اره درسته اومدم به جای SetAsWallpaperActivity اکتویتی
Activity_about رو فراخونی کردم خواستم ببینم Activity_about رو باز میکنه یا نه دیدم همون ارور رو داد . دوباره اکتیویتیSetAsWallpaperActivity رو جایگزین کردم این ارور ها رو داد.


10-09 00:11:43.697: E/AndroidRuntime(7158): FATAL EXCEPTION: main
10-09 00:11:43.697: E/AndroidRuntime(7158): Process: com.android.waller, PID: 7158
10-09 00:11:43.697: E/AndroidRuntime(7158): Theme: themes:{default=overlay:com.ngocgiap.xperia, iconPack:com.ngocgiap.xperia, fontPkg:com.ngocgiap.xperia, com.android.systemui=overlay:com.ngocgiap.xperia, com.android.systemui.navbar=overlay:com.ngocgiap.x peria}
10-09 00:11:43.697: E/AndroidRuntime(7158): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.waller/com.solodroid.materialwallpaper.SetAsWallpaperActi vity}: java.lang.NullPointerException: Attempt to read from null array
10-09 00:11:43.697: E/AndroidRuntime(7158): at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:2450)
10-09 00:11:43.697: E/AndroidRuntime(7158): at android.app.ActivityThread.handleLaunchActivity(Ac tivityThread.java:2510)
10-09 00:11:43.697: E/AndroidRuntime(7158): at android.app.ActivityThread.-wrap11(ActivityThread.java)
10-09 00:11:43.697: E/AndroidRuntime(7158): at android.app.ActivityThread$H.handleMessage(Activit yThread.java:1363)
10-09 00:11:43.697: E/AndroidRuntime(7158): at android.os.Handler.dispatchMessage(Handler.java:10 2)
10-09 00:11:43.697: E/AndroidRuntime(7158): at android.os.Looper.loop(Looper.java:148)
10-09 00:11:43.697: E/AndroidRuntime(7158): at android.app.ActivityThread.main(ActivityThread.jav a:5461)
10-09 00:11:43.697: E/AndroidRuntime(7158): at java.lang.reflect.Method.invoke(Native Method)
10-09 00:11:43.697: E/AndroidRuntime(7158): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:726)
10-09 00:11:43.697: E/AndroidRuntime(7158): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:616)
10-09 00:11:43.697: E/AndroidRuntime(7158): Caused by: java.lang.NullPointerException: Attempt to read from null array
10-09 00:11:43.697: E/AndroidRuntime(7158): at com.solodroid.materialwallpaper.SetAsWallpaperActi vity.onCreate(SetAsWallpaperActivity.java:53)
10-09 00:11:43.697: E/AndroidRuntime(7158): at android.app.Activity.performCreate(Activity.java:6 251)
10-09 00:11:43.697: E/AndroidRuntime(7158): at android.app.Instrumentation.callActivityOnCreate(I nstrumentation.java:1108)
10-09 00:11:43.697: E/AndroidRuntime(7158): at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:2403)
10-09 00:11:43.697: E/AndroidRuntime(7158): ... 9 more

msroid
یک شنبه 18 مهر 1395, 00:06 صبح
یکی از آرایه ها (یا چند تاشون) مقدار Null دارن و داری ازشون استفاده میکنی واسه همین ارور میده.

اونجایی که داری مقادیر رو از intent میخونی و توی آرایه های string قرار میدی احتمالا دارن مقادیر null رو داخل آرایه قرار میدن.

rezaeade
یک شنبه 18 مهر 1395, 00:11 صبح
ممنون ولی متوجه منظورتون نشدم میشه یکم ساده تر توضیح بدید

msroid
یک شنبه 18 مهر 1395, 00:24 صبح
احتمال داره اینجا مقدر null تولید بشه:

Intent i=getIntent();
position=i.getIntExtra("POSITION_ID", 0);
mAllImages=i.getStringArrayExtra("IMAGE_ARRAY");
mAllImageCatName=i.getStringArrayExtra("IMAGE_CATN AME");
mAllItemId=i.getStringArrayExtra("ITEMID");

TOTAL_IMAGE=mAllImages.length-1;

rezaeade
یک شنبه 18 مهر 1395, 00:36 صبح
الان به نظرتون اینو چیکارش کنم ؟

msroid
یک شنبه 18 مهر 1395, 09:39 صبح
با استفاده از دستور زیر میتونی چک کنی تا مطمئن بشی به intent چیزی پاس داده شده یا نه:

if (i.hasExtra("IMAGE_ARRAY"){
mAllImages=i.getStringArrayExtra("IMAGE_ARRAY");
}else // do something else


برای تمام اطلاعاتی که از intent میگیری میتونی اینکار رو بکنی. بعد از اینکه کارت با داده های دریافتی از intent تموم شد بازم باید چک کنی که داده هایی که گرفته null نبوده باشن. چون ممکنه یک آرایه با مقدار null درون intent بوده باشه یا با مقدار خالی و وقتی مثلا میگی من خونه دوم آرایه رو میخوام درسته آرایه ای هست اما چیزی داخلش نیست و برای همین ارور میده.