آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

ارسال داده از یک کلاس به یک اکتیویتی

reza1234  10 سال پیش  10 سال پیش
0 0

با سلام

دوستان چطور میشه از یک کلاسی که از اکتیویتی اکستندز نشده به یک کلاسی که از  اکتیویتی اکستندز شده داده ای رو ارسال کرد

ممنون

 برای این سوال 4 پاسخ وجود دارد.
پاسخ به سوال 
MOJTABA  10 سال پیش
+3 0

به نام خدا

شما می تونید توی اون کلاس یه متد یا چند متد بسازید که داده های مورد نظرتون رو به عنوان خروجی return کنه 

public class Test1{
.
.
.
.
public static String getData(){
return Data1;
}

}

حالا توی اکتیویتی موردنظرمون این متد را صدا می زنیم

 public class ActivityMain extends Activity {
.
.
String data = Test1.getData();
.
.
.
}
0 0
ممنون آقا مجتبی البته من یک رویداد کلیک دارم که میخوام با این رویداد یکسری اطلاعات به یه کلاس دیگه که از اکتیویتی اکسنتدز شده ارسال کنم و فکر میکنم با این روش شما امکان پذیر نیست (10 سال پیش)
پاسخ به سوال 
BrotherV  10 سال پیش
0 0

فکر میکنم شما میخواید بعد اجرای کامل کلاس نتیجه را با ایجاید یک رویداد به اکتیویتی منتقل کنه. مثلا تمام شدن دانلود را در انتها اعلام کنه. برای این کار بهتره شما یا از اینترفیس های موجود استفاده کنید یا یک اینترفیس بسازید. به طور مثال من یک اینترفیس ساختم و بعد از پایان کار نتیجه را به اینترفیس متصل میکنه و کافیه من اون اینترفیس را در اکتیویتی Override کنم.

در برنامه زیر بعد اتمام کپی اطلاعات دیتابیس متد Override شده در اکتیویتی فراخوانی و اجرا میشه. مثل کلیک کردن. ;)

public interface OnCopyDatabaseListener {
	    public void onCopy(boolean copy);
}

........
........

public class Database {

	    private OnCopyDatabaseListener listener;
	
    	public void copyDatabase() throws IOException {
		        OutputStream myOutput = new FileOutputStream(Database_Path
				        + Database_Name);
		        byte[] buffer = new byte[1024];
		        int lenght;
		        InputStream myInput = G.currentActivity.getAssets().open(Database_Name);
		        while ((lenght = myInput.read(buffer)) > 0) {
            			myOutput.write(buffer, 0, lenght);
		        }
		        myInput.close();
		        myOutput.flush();
        		myOutput.close();
		
		        if (listener != null) {
			            listener.onCopy(true);
		        }
	    }
	
    	public static void setOnCopyDatabaseListener(OnCopyDatabaseListener l) {
		        listener = l;
    	}
}

.........
.........

public class ActivityStartUp extends ActivityEnhanced {

    	@Override
	    protected void onCreate(Bundle savedInstanceState) {
		        super.onCreate(savedInstanceState);
		        setContentView(R.layout.activity_start_up);
		
		        Database.setOnCopyDatabaseListener(new OnCopyDatabaseListener() {
			            @Override
			            public void onCopy(boolean copy) {
				                //do something
            			}
		        });
	    }
}
پاسخ به سوال 
reza1234  10 سال پیش
0 0

ممنون

دوستان ببخشید که سوالم واضح نبود ولی من میخوام تو شکل زیر وقتی رو چک باکس کلیک میکنم بتونم تکست باتنها رو هم تغییر بدم.

0 0
شما میخواید تکست دکمه ها را تغییر بدید وقتی که چک باکس تیک خورد؟!! (10 سال پیش)
پاسخ به سوال 
BrotherV  10 سال پیش
+1 0

برای این کار همون راهی را که گفتم باید انجام بدید اما از اونجایی که شما لیست ویو ساختید و احتمالا خود لیست ویو را هم با کانستراکتور ساختید باید به صورت زیر که کد نویسیش را براتون میزارم انجام بدید.

1- اول یک اینترفیس بسازید و به صورت زیر تعریفش کنید.

public interface OnSelectItemListener {
	public void onSelectItem();
} ........ ........

2- بعد از اون در کلاس لیست ویو اینترفیس را به صورت زیر اعمال کنید.

public class AdapterFavDataList extends ArrayAdapter<StructArrayData> {
    	private OnSelectItemListener listener;

	    public AdapterFavDataList(ArrayList<StructArrayData> array) {
		        super(G.context, R.layout.lstview_content, array);
	    }

	    public static class ViewHolder {
		        private TextView txt1;
        		private TextView txt2;
		        private CheckBox chk1;
		        private OnSelectItemListener listener;

		        public ViewHolder(View view) {

			            layLstFavImageContainer = (ViewGroup) view
					            .findViewById(R.id.layLstFavImageContainer);
			            txt1 = (TextView) view.findViewById(R.id.txtName);
			            txt2 = (TextView) view.findViewById(R.id.txtDetail);
			            chk1 = (CheckBox) view.findViewById(R.id.chk1);
        		}

		       /*
		        * 
		        */
        		public void fill(final ArrayAdapter<StructArrayData> array,
				        final StructArrayData item, final int position) {
			        txt2.setText(item.names);
			        txt2.setText(item.details);
			
			        chk1.setOnClickListener(new OnClickListener() {
				            @Override
				            public void onClick(View arg0) {
					                if (listener != null) {
                    						listener.onSelectItem();
                					}
            				}
			        });
        		}
	    }

	    @Override
	    public View getView(final int position, View convertView, ViewGroup parent) {
		        ViewHolder holder;

		        StructArrayData item = getItem(position);
		        if (convertView == null) {
             			convertView = G.inflater.inflate(R.layout.lstview_content,
					             parent, false);
             			holder = new ViewHolder(convertView);
             			convertView.setTag(holder);
		        } else {
			             holder = (ViewHolder) convertView.getTag();
		        }

		        if (this.listener != null) {
			            holder.listener = this.listener;
		        }
		        holder.fill(this, item, position);
            		return convertView;
	    }

	    public void setOnSelectItemListener(OnSelectItemListener l) {
		        listener = l;
    	}
}
..
..

3- از طرفی اگر کلاس G را تعریف کردید باید Adapter  مورد نظرتون را از جنس کلاس بسازید.

public static ArrayList<StructArrayData> dataArrayList = new ArrayList<StructArrayData>();
public static AdapterDataList dataAdapter;
..
..

4- حالا در اکتیویتی میتونید متد OnItemSelected را Override  کنید.

public class ActivityFavList extends ActivityEnhanced {

	   private ListView lstDataContent;
	   private Button btn1;
	   private Button btn1;
	
	   @Override
	   protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
		  setContentView(R.layout.activity_list);
		
	  	btn1 = (TextView) findViewById(R.id.btnDone);
	  	btn2 = (TextView) findViewById(R.id.btnCancel);
	  	lstDataContent = (ListView) findViewById(R.id.lstDataContent);

		  G.dataAdapter = new AdapterFavDataList(G.dataArrayList);
		  lstDataContent.setAdapter(G.dataAdapter);
		  //
		  G.dataAdapter.OnSelectItemListener(new OnSelectItemListener() {
				    @Override
					   public void onSelectItem() {
				      		btn1.setText("تغییر نام دکمه");
   					}
				});
		  //
    }
}
0 0
خیلی از شما متشکرم آقا محسن (10 سال پیش)
0 0
خواهش میکنم. موفق و پیروز باشید. (10 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .