بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

سوال ساده ولی ضروروی در مورد انتقال اسم و عدد از یک اکتیویتی به اکتیویتی دیگه

مدیریت گفتگو
صالحی 9 سال پیش
آخرین تغییر: 9 سال پیش

سلام

من چند تا ادیت تکس دارم که میخوام شخص اطلاعات خودش رو وارد کنه و با زدن دکمه صفحه بعد تمام این اطلاعات در صفحه بعدی باشه 

چکاری باید انجام بدم ؟؟  لطفا راهنمایی کنید و اگر نمونه کدی هست لطفا معرفی کنید 

دوستان؟؟؟

نظرات

sana ebadi 9 سال پیش
سلام بله خیلی ساده اس من در قالب یک پاسخ بهتون راهنمایی میکنم .
صالحی 9 سال پیش
مرسی .ممنون میشم ازتون
sana ebadi 9 سال پیش
خواهش میکنم اگه به کارتون اومد و مفید شد، لطفا با انتخاب پاسخ به عنوان پاسخ صحیح بچه ها رو راهنمایی کنید. با تشکر

پاسخ‌ها 6

sana ebadi 9 سال پیش

خب 

این کار با putExtra و bundle امکان پذیره .

مثلا شما در اکتویتی اول دو  EditText  دارید که در اولی اسمتون و در دومی سنتون رو وارد میکنید 

و انتظار دارین همین داده ها  بصورت یک تکست در اکتیویتی دوم نمایش داده بشن . 

خب اول EditText خودتون رو طراحی کنید (در لی اوت )

بعد با توجه به id ، اونا رو در اکتیویتی به جاوا مربوط میکینید (کست میکنید ) مثلا     `EditText edt_text = (EditText findViewById (R.id.edt_text))

خب اینجوری تعریف میکنید و button یی که وظیفه ی رفتن به اکتیویتی بعدی هست رو هم تعریف میکنید . و براس یه 

setOnClickListenerتعریف میکنید .  و در اونجا کد اصلی نوشته میشه ینی همون "putExtra"   خب مثلا مثل زیر توجه کنید :

کلا از متد 

`()getText().toString` استفاده میکنیم.

btn_goNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

String data = edt_data.getText().toString(); // گرفتن مقادیر رشته ای از ادیت تکست که اسم توش نوشته شده
int age = Integer.parseInt(edt_age.getText().toString()); // گرفتن عدد که از جنس int هست

Intent intent = new Intent(MainActivity.this , SecondActivity.class);
intent.putExtra("DATA" , data);
intent.putExtra("AGE" , age);
MainActivity.this.startActivity(intent);
}
});

خب کارمون در اکتویتی اول تمام شد . حالا اکتویتی بعدی رو باز کنید و اگر در لی اوت مربوطش از textView استفاده کردین (برای ست کردن مقادیر از اکتویتی اول) ، پس مثل دکمه یا ادیت تکست یا هر ویووی دیگه تعریف کنید و با کلاس Bundle داده رو میگیرید...

به کد زیر توجه کنید ..


TextView txt_bundle = (TextView) findViewById(R.id.txt_bundle);

Bundle bundle = getIntent().getExtras(); //گرفتن extras

String data = bundle.getString("DATA"); //گرفتن دادی از جنس string
int age = bundle.getInt("AGE"); // گرفتن داداه از جنس int

txt_bundle.setText(data + " , " + age); ست کردن مقادیر در textView برای نمایش










  • و تمام انمیدوارم مفید باشه  . موفق باشید .

نظرات

oMiD4gApp 9 سال پیش
بله پاسخشون کامل و قابل فهم بود...اما استاد توی پکیج اموزشی قدیم بصورت تصویری چنین مبحثی رو دارند و برای متوجه شدن و درک کردن این موضوع میتونید ببینید-در قسمت پنجم بخش اول اموزش قدیم(اگر پکیج رو خریدید البته) لینک
صالحی 9 سال پیش
عالی بود مرسیییی
صالحی 9 سال پیش
یه سوال دیگه چطور میتونم تکست ویو یا ادیت تکست رو حالت شناور بدم و کل دکمه و .... ؟؟؟؟؟؟
sana ebadi 9 سال پیش
خواهش میکنم. ولی منظورتون از شناور چیه ؟ با متریال امکان داره ، مثلا fab یا ... ، دقیقا منظور شما چیست ؟
صالحی 9 سال پیش
نمیخوام با متریال دیزاین این کار رو بکنم چون برای ورژن های پایین هم میخوام یعنی تکست ویو وقتی لمس میکنی و فشار میدی بتونی جابجاش کنی
صالحی 9 سال پیش
بشه این تکست ویو رو جابجا کرد و مثل کوچیک کردن و بزرگ کردن دو انگشتی عکس به تکست ویو هم همین حالت رو داد
sana ebadi 9 سال پیش
خب نمیدونم بدون متریال چجوره ولی امکان پذیره . یه عنوان سوال مطرح کنید و از دوستان بپرسید . حنما کسی هست که بلد باشه . موفق باشید
صالحی 9 سال پیش
float dX, dY; @Override public boolean onTouch(View view, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: dX = view.getX() - event.getRawX(); dY = view.getY() - event.getRawY(); break; case MotionEvent.ACTION_MOVE: view.animate() .x(event.getRawX() + dX) .y(event.getRawY() + dY) .setDuration(0) .start(); break; default: return false; } return true; }
صالحی 9 سال پیش

 
float dX, dY;

@Override
public boolean onTouch(View view, MotionEvent event) {

    switch (event.getAction()) {

        case MotionEvent.ACTION_DOWN:

            dX = view.getX() - event.getRawX();
            dY = view.getY() - event.getRawY();
            break;

        case MotionEvent.ACTION_MOVE:

            view.animate()
                    .x(event.getRawX() + dX)
                    .y(event.getRawY() + dY)
                    .setDuration(0)
                    .start();
            break;
        default:
            return false;
    }
    return true;
}

نظرات

صالحی 9 سال پیش

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

نظرات

Reza 9 سال پیش

سلام ، اگه کاستوم کنترل انداختین داخل صفحه ، کافیه در همون کلاس کاستوم این متد رو override کنین ( بدون نیاز به پارامتر View ) :

 @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {

            case MotionEvent.ACTION_DOWN:

                dX = getX() - event.getRawX();
                dY = getY() - event.getRawY();
                break;

            case MotionEvent.ACTION_MOVE:

                animate()
                        .x(event.getRawX() + dX)
                        .y(event.getRawY() + dY)
                        .setDuration(0)
                        .start();
                break;
            default:
                return false;
        }
        return true;
 }

 

اما اگه کنترل خود اندروید هست به این صورت استفاده میشه :

 txt.setOnTouchListener(new OnTouchListener() {
            
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {

                    case MotionEvent.ACTION_DOWN:

                        dX = v.getX() - event.getRawX();
                        dY = v.getY() - event.getRawY();
                        break;

                    case MotionEvent.ACTION_MOVE:

                        v.animate()
                                .x(event.getRawX() + dX)
                                .y(event.getRawY() + dY)
                                .setDuration(0)
                                .start();
                        break;
                    default:
                        return false;
                }
                return true;
            }
 });

نظرات

صالحی 9 سال پیش
مرسی چک میکنم ببینم چی به چیه
صالحی 9 سال پیش
کلاس که من ایجاد کردم یک اکتیویتی ساده و یک تکست ویو رو داخل لایه رلاتیو گذاشتم و میخوام این تکست ویو وقتی رووش لانگ کلیک شد حالت درگ و دراپ داشته باشه و جاباجا شه
صالحی 9 سال پیش
implements OnTouchListener اینو به اکتیویتی اضافه کردم .مرسی حل شده
صالحی 9 سال پیش
چند تا سوال دیگه هم دارم ایرادی نداره بپرسم ؟؟
Reza 9 سال پیش
بپرسین ، هر کی بتونه جواب میده .
صالحی 9 سال پیش
میخوام در یک ایکس ام ال یه دکمه بزارم و اونو در اکتیوتی خودش فراخونی کنم وقتی دکمه رو میزنم یه ایکس ام ال شفاف ظاهر شه که بشه عملیاتی در اون ایکس ام ال انجام بدم و وقتی در ایکس ام ال دوم دکمه اوکی رو زدم اظلاعات وارد ایکس ام ال اول شه . ممنون میشم راهنمایی کنید .
AmirrezASe7eN 9 سال پیش
با استفاده از Dialog میتونید این کار رو انجام بدید
صالحی 9 سال پیش
یه سوال دیگه داشتم. یه دکمه ای که میاد از یه لایه و محتویات درونش اسکرین میگیره و ارسال میکنه .. داخل این لایه یه متن باید وارد شه . مثلا یه داده ای میاد تو این تکست چه کدی باید بنویسم که وقتی درون تکست وی چیزی نیومده و کاربر دکمه ارسال رو زد . چک شه که اگه اطلاعاتی وارد نشد یه پیام براش بیاد که اول داده ها باید وارد شن و بعد اقدام به ارسال شه
sana ebadi 9 سال پیش
خب با if ساده میتونید محتویات اون ادیت تکست یا تکست وویو رو بگیرید و شرط بذارید اگه خالی بود یه پیغام مثلا toast نشون داده شه که اول فیلد ها رو پر کن در غیر اینصورت مجاز به ادامه ی کار نخواهی بود . اگه منظورتون رو متوجه شدم باشم همین کارتونو راه میندازه خیلی راحت . ولی اگه چیز دیگه مد نظرت هست بیشتر توضیح بده که دوستان یا من بیشتر کمکت کنیم. موفق باشید
صالحی 9 سال پیش

  public void click (){
img_send.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (!(txt_matn== null)) {
Toast.makeText(getApplicationContext(), "لطفا اول متن را وارد کنید.", Toast.LENGTH_LONG).show();
}
else {
String FileName = SaveScreenshot();
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse(FileName));
startActivity(Intent.createChooser(intent, getString(R.string.ShareBy)));
}

}
});




این کد رو گذاشتم
ولی همیشه toast را نشون میده

نظرات

صالحی 9 سال پیش
حل شد . اومدم یه int flag =0; کلی تعریف کردم و بعد در قسمت گرفتن متن flag رو برابر یک کردم , و در قسمت ارسال if تعریف کردم و کفتم اگه flag برابر صفر بود یه پیغام بفرست غیر این اسکرین بگیر و بفرست
صالحی 9 سال پیش
یه سوال داشتم تقریبا شبیه قبل چطور باید کد نویسی کنم تکست وی در حالت عادی خالیه هر وقت مقدار ش تغییر کرد یه عملی انجام شه . مثلا اگر تکست ویو برابر مقدار اولیه فلان کار شه و غیر این که تغییر کرد فلان کار شه
Miaad 9 سال پیش

راه انتقال همین نوع اطلاعات از اکتیوتی به یک فرگمنت چیه کسی میدونه ؟؟؟!!! نمیخوام از استارت اکتیوتی استفاده کنم که ارور نال اکسپشن بده !!! با گت آرگومان و ست ارگومان کار میکنم بازم همین ارور نال ابجکت رفرنس میده کسی راه حلی داره ؟!!!!

نظرات


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