ghader62
شنبه 09 فروردین 1393, 08:53 صبح
سلام دوستان
من از یک TabActivity در برنامه ام استفاده کردم یکی از تب های برنامه هم لیست ویویی وجود دارد که از نت دیتا را دانلود و مصرف میکند
من برای کلیک روی هر آیتم از این لیست از startActivityForResult استفاده کردم که با این ، به اکتیویتی هدایت میشه که چندین آیتم رو به نمایش میزاره و با زدن setResult ،آیتم انتخاب شده رو به اکتیویتی اصلی برمیگردونه
حالا مشکل من در قسمت آخر یعنی برگرداندن آیتم انتخاب شده به اکتیویتی اصلی هستش که با زدن دکمه setResult اصلا به اکتیویتی اصلی هدایت نمیشه
من این کلاس TabActivity رو از یکجایی ور داشتم و زیاد توش دقیق نشدم ولی مطمئنم که ایراد کارم در این تب اکتیویتی هستش چون نمونه کلاسیک tabActivity رو در جای دیگری استفاده کردم که درست جواب گرفتم
دوستان اگر چیزی به ذهنشون میرسه ممنون میشم کمکم کنند
کلاس TabActivity
public class IrTabActivity extends TabActivity {
private ViewPager mPager;
private List<View> listViews;
private ImageView cursor;
private RelativeLayout t1, t2, t3;
private int offset = 0;
private int currIndex = 0;
private int bmpW;
private TabHost mTabHost;
private LocalActivityManager manager = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainta);
mTabHost = getTabHost();
mTabHost.addTab(mTabHost.newTabSpec("A").setIndicator(
"").setContent(
new Intent(this, IrNewActivity.class)));
mTabHost.addTab(mTabHost.newTabSpec("B").setIndicator(
"").setContent(
new Intent(this, IrMaxActivity.class)));
mTabHost.addTab(mTabHost.newTabSpec("C").setIndicator(
"").setContent(
new Intent(this, FirstCategory.class)));
mTabHost.setCurrentTab(0);
manager = new LocalActivityManager(this, true);
manager.dispatchCreate(savedInstanceState);
InitImageView();
InitTextView();
InitViewPager();
}
private void InitTextView() {
t1 = (RelativeLayout) findViewById(R.id.SearchCardButton);
t2 = (RelativeLayout) findViewById(R.id.CategoryCardButton);
t3 = (RelativeLayout) findViewById(R.id.PublishCardButton);
t1.setOnClickListener(new MyOnClickListener(0));
t2.setOnClickListener(new MyOnClickListener(1));
t3.setOnClickListener(new MyOnClickListener(2));
}
private void InitViewPager() {
mPager = (ViewPager) findViewById(R.id.vPager);
listViews = new ArrayList<View>();
Intent intent = new Intent(this, IrNewActivity.class);
listViews.add(getView("Black", intent));
Intent intent2 = new Intent(this, IrMaxActivity.class);
listViews.add(getView("Gray", intent2));
Intent intent3 = new Intent(this, FirstCategory.class);
listViews.add(getView("White", intent3));
mPager.setAdapter(new MyPagerAdapter(listViews));
mPager.setCurrentItem(0);
mPager.setOnPageChangeListener(new MyOnPageChangeListener());
}
private View getView(String id, Intent intent) {
return manager.startActivity(id, intent).getDecorView();
}
private void InitImageView() {
cursor = (ImageView) findViewById(R.id.cursor);
bmpW = BitmapFactory.decodeResource(getResources(), R.drawable.a).getWidth();
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics( dm);
int screenW = dm.widthPixels;
offset = (screenW / 3 - bmpW) / 2;
Matrix matrix = new Matrix();
matrix.postTranslate(offset, 0);
cursor.setImageMatrix(matrix);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent intent = new Intent(IrTabActivity.this, Main.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
public class MyPagerAdapter extends PagerAdapter {
public List<View> mListViews;
public MyPagerAdapter(List<View> mListViews) {
this.mListViews = mListViews;
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView(mListViews.get(arg1));
}
@Override
public void finishUpdate(View arg0) {}
@Override
public int getCount() {
return mListViews.size();
}
@Override
public Object instantiateItem(View arg0, int arg1) {
((ViewPager) arg0).addView(mListViews.get(arg1), 0);
return mListViews.get(arg1);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == (arg1);
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void startUpdate(View arg0) {}
}
public class MyOnClickListener implements View.OnClickListener {
private int index = 0;
public MyOnClickListener(int i) {
index = i;
}
@Override
public void onClick(View v) {
mPager.setCurrentItem(index);
}
};
public class MyOnPageChangeListener implements OnPageChangeListener {
int one = offset * 2 + bmpW;
int two = one * 2;
int three = one * 3;
@Override
public void onPageSelected(int arg0) {
Animation animation = null;
switch (arg0) {
case 0:
if (currIndex == 1) {
animation = new TranslateAnimation(one, 0, 0, 0);
} else if (currIndex == 2) {
animation = new TranslateAnimation(two, 0, 0, 0);
}
break;
case 1:
if (currIndex == 0) {
animation = new TranslateAnimation(offset, one, 0, 0);
} else if (currIndex == 2) {
animation = new TranslateAnimation(two, one, 0, 0);
}
break;
case 2:
if (currIndex == 0) {
animation = new TranslateAnimation(offset, two, 0, 0);
} else if (currIndex == 1) {
animation = new TranslateAnimation(one, two, 0, 0);
}
break;
}
currIndex = arg0;
animation.setFillAfter(true);
animation.setDuration(300);
cursor.startAnimation(animation);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {}
@Override
public void onPageScrollStateChanged(int arg0) {}
}
من دیتای IrNewActivity رو از نت میگیرم که بدرستی دیتا دریافت میشه وبا کلیک روی هر آیتم متد زیر اجرا میشه
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
Intent intent = new Intent(IrMaxActivity.this, ClickHelper.class);
intent.putExtra(ClickHelper.POSITION, position);
startActivityForResult(intent, ClickHelper.REQUESTCODE);
}
و در کلاس ClickHelper با کلیک روی آیتم متد زیر اجرا میشه
btn_active.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = getIntent();
intent.putExtra(CLICK, 1);
setResult(REQUESTCODE, intent);
finish();
}
});
و در اکتیویتی اصلی که همان IrNewActivityاصلی هستش اصلا به متد زیر هدایت نمیشه
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);}
من از یک TabActivity در برنامه ام استفاده کردم یکی از تب های برنامه هم لیست ویویی وجود دارد که از نت دیتا را دانلود و مصرف میکند
من برای کلیک روی هر آیتم از این لیست از startActivityForResult استفاده کردم که با این ، به اکتیویتی هدایت میشه که چندین آیتم رو به نمایش میزاره و با زدن setResult ،آیتم انتخاب شده رو به اکتیویتی اصلی برمیگردونه
حالا مشکل من در قسمت آخر یعنی برگرداندن آیتم انتخاب شده به اکتیویتی اصلی هستش که با زدن دکمه setResult اصلا به اکتیویتی اصلی هدایت نمیشه
من این کلاس TabActivity رو از یکجایی ور داشتم و زیاد توش دقیق نشدم ولی مطمئنم که ایراد کارم در این تب اکتیویتی هستش چون نمونه کلاسیک tabActivity رو در جای دیگری استفاده کردم که درست جواب گرفتم
دوستان اگر چیزی به ذهنشون میرسه ممنون میشم کمکم کنند
کلاس TabActivity
public class IrTabActivity extends TabActivity {
private ViewPager mPager;
private List<View> listViews;
private ImageView cursor;
private RelativeLayout t1, t2, t3;
private int offset = 0;
private int currIndex = 0;
private int bmpW;
private TabHost mTabHost;
private LocalActivityManager manager = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainta);
mTabHost = getTabHost();
mTabHost.addTab(mTabHost.newTabSpec("A").setIndicator(
"").setContent(
new Intent(this, IrNewActivity.class)));
mTabHost.addTab(mTabHost.newTabSpec("B").setIndicator(
"").setContent(
new Intent(this, IrMaxActivity.class)));
mTabHost.addTab(mTabHost.newTabSpec("C").setIndicator(
"").setContent(
new Intent(this, FirstCategory.class)));
mTabHost.setCurrentTab(0);
manager = new LocalActivityManager(this, true);
manager.dispatchCreate(savedInstanceState);
InitImageView();
InitTextView();
InitViewPager();
}
private void InitTextView() {
t1 = (RelativeLayout) findViewById(R.id.SearchCardButton);
t2 = (RelativeLayout) findViewById(R.id.CategoryCardButton);
t3 = (RelativeLayout) findViewById(R.id.PublishCardButton);
t1.setOnClickListener(new MyOnClickListener(0));
t2.setOnClickListener(new MyOnClickListener(1));
t3.setOnClickListener(new MyOnClickListener(2));
}
private void InitViewPager() {
mPager = (ViewPager) findViewById(R.id.vPager);
listViews = new ArrayList<View>();
Intent intent = new Intent(this, IrNewActivity.class);
listViews.add(getView("Black", intent));
Intent intent2 = new Intent(this, IrMaxActivity.class);
listViews.add(getView("Gray", intent2));
Intent intent3 = new Intent(this, FirstCategory.class);
listViews.add(getView("White", intent3));
mPager.setAdapter(new MyPagerAdapter(listViews));
mPager.setCurrentItem(0);
mPager.setOnPageChangeListener(new MyOnPageChangeListener());
}
private View getView(String id, Intent intent) {
return manager.startActivity(id, intent).getDecorView();
}
private void InitImageView() {
cursor = (ImageView) findViewById(R.id.cursor);
bmpW = BitmapFactory.decodeResource(getResources(), R.drawable.a).getWidth();
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics( dm);
int screenW = dm.widthPixels;
offset = (screenW / 3 - bmpW) / 2;
Matrix matrix = new Matrix();
matrix.postTranslate(offset, 0);
cursor.setImageMatrix(matrix);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent intent = new Intent(IrTabActivity.this, Main.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
public class MyPagerAdapter extends PagerAdapter {
public List<View> mListViews;
public MyPagerAdapter(List<View> mListViews) {
this.mListViews = mListViews;
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView(mListViews.get(arg1));
}
@Override
public void finishUpdate(View arg0) {}
@Override
public int getCount() {
return mListViews.size();
}
@Override
public Object instantiateItem(View arg0, int arg1) {
((ViewPager) arg0).addView(mListViews.get(arg1), 0);
return mListViews.get(arg1);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == (arg1);
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void startUpdate(View arg0) {}
}
public class MyOnClickListener implements View.OnClickListener {
private int index = 0;
public MyOnClickListener(int i) {
index = i;
}
@Override
public void onClick(View v) {
mPager.setCurrentItem(index);
}
};
public class MyOnPageChangeListener implements OnPageChangeListener {
int one = offset * 2 + bmpW;
int two = one * 2;
int three = one * 3;
@Override
public void onPageSelected(int arg0) {
Animation animation = null;
switch (arg0) {
case 0:
if (currIndex == 1) {
animation = new TranslateAnimation(one, 0, 0, 0);
} else if (currIndex == 2) {
animation = new TranslateAnimation(two, 0, 0, 0);
}
break;
case 1:
if (currIndex == 0) {
animation = new TranslateAnimation(offset, one, 0, 0);
} else if (currIndex == 2) {
animation = new TranslateAnimation(two, one, 0, 0);
}
break;
case 2:
if (currIndex == 0) {
animation = new TranslateAnimation(offset, two, 0, 0);
} else if (currIndex == 1) {
animation = new TranslateAnimation(one, two, 0, 0);
}
break;
}
currIndex = arg0;
animation.setFillAfter(true);
animation.setDuration(300);
cursor.startAnimation(animation);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {}
@Override
public void onPageScrollStateChanged(int arg0) {}
}
من دیتای IrNewActivity رو از نت میگیرم که بدرستی دیتا دریافت میشه وبا کلیک روی هر آیتم متد زیر اجرا میشه
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
Intent intent = new Intent(IrMaxActivity.this, ClickHelper.class);
intent.putExtra(ClickHelper.POSITION, position);
startActivityForResult(intent, ClickHelper.REQUESTCODE);
}
و در کلاس ClickHelper با کلیک روی آیتم متد زیر اجرا میشه
btn_active.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = getIntent();
intent.putExtra(CLICK, 1);
setResult(REQUESTCODE, intent);
finish();
}
});
و در اکتیویتی اصلی که همان IrNewActivityاصلی هستش اصلا به متد زیر هدایت نمیشه
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);}