نمایش نتایج 1 تا 11 از 11

نام تاپیک: خطا در ارسال دیتا از یک اکتیویتی به اکتیویتی دیگر ؟

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    Question خطا در ارسال دیتا از یک اکتیویتی به اکتیویتی دیگر ؟

    سلام به همه :-)
    دوستان من با کلیک روی آیتم های لیست ویو ، id آیتم مورد نظر رو میگیرم :


    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
    Log.d("Clicked item id", " "+ id);
    // Intent intent = new Intent(getBaseContext(), UpdateActivity.class);
    // intent.putExtra("EXTRA_ID", id);
    // startActivity(intent);
    return true;
    }


    توی لاگ مشخصه (عکس ضمیمه)

    اما وقتی ارسال میکنم به اکتیویتی بعد برنامه بسته میشه !
    اینم کدای اکتیویتی دوم که مقدار رو میریزم توی یه متغیر استرینگ :


    STR_ID = getIntent().getStringExtra("EXTRA_ID");
    TXT_VIEW.setText(STR_ID);


    در واقع آیدی رو واسه ویرایش و حذف میخوام !
    عکس های ضمیمه عکس های ضمیمه

  2. #2
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: خطا در ارسال دیتا از یک اکتیویتی به اکتیویتی دیگر ؟

    چرا به دیتابیس گیر میده !؟
    من فقط آیدی رو دارم میفرستم به اکتیویتی بعد :


    LIST_USER.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
    Log.d("Clicked item id", " "+ id);
    Intent intent = new Intent(getBaseContext(), UpdateActivity.class);
    intent.putExtra("EXTRA_ID", id);
    startActivity(intent);
    return true;
    }
    });


    با دیتابیس کاری ندارم ! این کل کداهای اکتیویتی دوم هست :


    package ir.rahgoshafan.attachsqlitedatabase;

    import android.support.design.widget.Snackbar;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;

    import ir.rahgoshafan.attachsqlitedatabase.database.Datab aseHelper;

    public class UpdateActivity extends AppCompatActivity {
    private DatabaseHelper DB_HELPER;

    private TextView TXT_VIEW;
    private EditText EDT_NAME;
    private EditText EDT_AGE;
    private EditText EDT_GENDER;
    private EditText EDT_PASS;
    private EditText EDT_DESC;
    private EditText EDT_PIC;
    private Button BTN_UPDATE;
    private Button BTN_DELETE;
    private String STR_ID;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_update);

    TXT_VIEW = (TextView) findViewById(R.id.textView);
    EDT_NAME = (EditText) findViewById(R.id.editText);
    EDT_AGE = (EditText) findViewById(R.id.editText2);
    EDT_GENDER = (EditText) findViewById(R.id.editText3);
    EDT_PASS = (EditText) findViewById(R.id.editText4);
    EDT_DESC = (EditText) findViewById(R.id.editText5);
    EDT_PIC = (EditText) findViewById(R.id.editText6);
    BTN_UPDATE = (Button) findViewById(R.id.button) ;
    BTN_DELETE = (Button) findViewById(R.id.button2);

    DB_HELPER = new DatabaseHelper(this);

    STR_ID = getIntent().getStringExtra("EXTRA_ID");
    TXT_VIEW.setText(STR_ID);

    BTN_UPDATE.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    try {
    boolean isInserted = DB_HELPER.updateUser(Integer.parseInt(STR_ID), EDT_NAME.getText().toString(), Integer.parseInt(EDT_AGE.getText().toString()),
    Integer.parseInt(EDT_GENDER.getText().toString()), Integer.parseInt(EDT_PASS.getText().toString()),
    EDT_DESC.getText().toString(), EDT_PIC.getText().toString());
    if (isInserted == true)
    // finish method use to close this activity and back to main activity
    finish();
    else
    Snackbar.make(view, "خطا در ورایش مشخصات کاربر!", Snackbar.LENGTH_LONG).setAction("Action", null).show();
    } catch(Exception e){
    e.printStackTrace();
    return;
    }
    }
    });

    BTN_DELETE.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    try {
    boolean isInserted = DB_HELPER.deleteUser(Integer.parseInt(STR_ID));
    if (isInserted == true)
    // finish method use to close this activity and back to main activity
    finish();
    else
    Snackbar.make(view, "خطا در حذف کاربر!", Snackbar.LENGTH_LONG).setAction("Action", null).show();
    } catch(Exception e){
    e.printStackTrace();
    return;
    }
    }
    });
    }
    }
    عکس های ضمیمه عکس های ضمیمه

  3. #3
    مدیر بخش آواتار ژیار رحیمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    1,095

    نقل قول: خطا در ارسال دیتا از یک اکتیویتی به اکتیویتی دیگر ؟

    نقل قول نوشته شده توسط ghasem110deh مشاهده تاپیک
    سلام به همه :-)
    دوستان من با کلیک روی آیتم های لیست ویو ، id آیتم مورد نظر رو میگیرم :


    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
    Log.d("Clicked item id", " "+ id);
    // Intent intent = new Intent(getBaseContext(), UpdateActivity.class);
    // intent.putExtra("EXTRA_ID", id);
    // startActivity(intent);
    return true;
    }


    توی لاگ مشخصه (عکس ضمیمه)

    اما وقتی ارسال میکنم به اکتیویتی بعد برنامه بسته میشه !
    اینم کدای اکتیویتی دوم که مقدار رو میریزم توی یه متغیر استرینگ :


    STR_ID = getIntent().getStringExtra("EXTRA_ID");
    TXT_VIEW.setText(STR_ID);


    در واقع آیدی رو واسه ویرایش و حذف میخوام !
    id از نوع long هست به اکتیویتی دوم که پاس میشود باید بصورت long خوانده شود.

    Bundle extra=getIntent().getExtras();
    if(extra!=null){
    long Id = extra.getLong("EXTRA_ID");
    TXT_VIEW.setText("" + id);
    }
    First,solve the problem then write the code

  4. #4
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: خطا در ارسال دیتا از یک اکتیویتی به اکتیویتی دیگر ؟

    آقای رحیمی تشکر :-)
    کاش سوال رو کامل میپرسیدم !!!

    حالا چطور بقیه اطلاعات کاربر رو بفرستم به اکتیویتی ویرایش ؟
    اینطوری رفتم جلو ولی برنامه بسته میشه :


    User user = (User) parent.getItemAtPosition(1);
    Log.i("Clicked item text : ", String.valueOf(position));


    یوزر ، کلاس یوزر هست (جدول یوزر) که حاوی فیلدهای یوزر هست ؟ (من توی جدول 8 تا فیلد دارم که فقط 4 تاش رو توی لیست ویو نمایش دادم)
    و یه سوال دیگه اینکه الان دارم آدرس عکس (از توی گالری گوشی) توی دیتابیس ذخیره میکنم ، چطور توی imageView نمایش بدم ؟

    تشکر :-)
    (سیستم عامل اندروید خیلی مزخرفه )

  5. #5
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: خطا در ارسال دیتا از یک اکتیویتی به اکتیویتی دیگر ؟

    و سوال دیگه :
    میخوام اطلاعات کاربر رو با توجه به آیدی ش از دیتابیس بخونم و توی تکست ویو نشون بدم !
    البته آخرین فیلد جدول ادرس عکس هست (که از گالری انتخاب شده) و بعد با توجه به اون آدرس عکس توی imageView نمایش داده بشه

    این کد واسه خوندن اطلاعات با توجه به آیدی :


    public Cursor selectUser(int id) {
    openDatabase();
    db.beginTransaction();
    try {
    Cursor cursor = db.rawQuery("SELECT * FROM tblUser WHERE id =" + id, null);
    db.setTransactionSuccessful();
    cursor.moveToFirst();
    return cursor;
    } catch (Exception e) {
    e.printStackTrace();
    Log.d(TAG, "Delete Error");
    return null;
    } finally {
    db.endTransaction();
    closeDatabase();
    }
    }


    اینم کد مربوط به اکتیویت که میخوام نام کاربر و عکس ش (آدرس عکس توی گالری) نمایش بدم :

    private void loadUserInfo() {
    try {
    Cursor cursor = DB_HELPER.selectUser(Integer.parseInt(String.value Of(LNG_ID)));
    if (cursor.moveToFirst()) {
    File imgFile = new File(cursor.getString(6));
    if (imgFile.exists()) {
    Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath() );
    IMG_USER.setImageBitmap(myBitmap);
    }
    TXT_USERINFO.setText(cursor.getString(6));
    }
    } catch (Exception e) {
    Log.i("Error", e.toString());
    return;
    } }


    منتها این خطا رو میده :

    I/Clicked*item*id*:: 4
    I/Error: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.Cursor ir.rahgoshafan.attachsqlitedatabase.database.Datab aseHelper.selectUser(int)' on a null object reference
    I/Choreographer: Skipped 57 frames! The application may be doing too much work on its main thread.

  6. #6
    مدیر بخش آواتار ژیار رحیمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    1,095

    نقل قول: خطا در ارسال دیتا از یک اکتیویتی به اکتیویتی دیگر ؟

    شما Id کاربر رو به Activity ویرایش پاس میکنی در Activity ویرایش میتونی بر اساس Id روی جدول Users از دیتابیس Select بزنی یا روش دیگر همانند پاس کردن Id بقیه property های User رو به Activity ویراش پاس بدی .(به نظر من روش اول مناسب تر هست).

    private ImageView ImgView;
    ImgView = (ImageView) findViewById(R.id.imageView);
    ImgView.setImageBitmap(BitmapFactory.decodeFile("p athOfImageFile"));
    First,solve the problem then write the code

  7. #7
    مدیر بخش آواتار ژیار رحیمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    1,095

    نقل قول: خطا در ارسال دیتا از یک اکتیویتی به اکتیویتی دیگر ؟

    خب مشخصه اشاره گر cursor دارای مقدار null هست شما مقدارId رو Log کنید.و حتما بعد از Select مقدار cursor رو چک کنید که null نباشد.نوع تبدیل به Integer رو هم بصورت زیر بنوسید ببین مشکل حل می شود.

    Integer.parseInt(LNG_ID.getText().toString());
    First,solve the problem then write the code

  8. #8
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: خطا در ارسال دیتا از یک اکتیویتی به اکتیویتی دیگر ؟

    آیدی رو بدون مشکل میگیره ! توی تکست ویو و هم توی لاگ نمایش میده !
    کدهای مربوط به خوندن سطر به نظرم مشکل دشته باشه !!؟؟ ظاهرا کدای توی کلاس دیتابیس هم که درستن


  9. #9
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: خطا در ارسال دیتا از یک اکتیویتی به اکتیویتی دیگر ؟

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

    Log.i("item Text ", parent.getItemAtPosition(1).toString());


    منتها خروجی اینه !!

    I/Clicked item id: 23
    I/item Text: ir.rahgoshafan.attachsqlitedatabase.model.UserInfo @14f4b78

  10. #10
    کاربر دائمی آواتار Nevercom
    تاریخ عضویت
    دی 1387
    محل زندگی
    بستک
    سن
    35
    پست
    1,118

    نقل قول: خطا در ارسال دیتا از یک اکتیویتی به اکتیویتی دیگر ؟

    کلاسی که بعنوان مدل ساختید رو به شکلی غییر بدید که اینترفیس Parcelable رو implement کنه. با اینکار میتونید کل آبجکت رو در اینتنت ارسال کنید (putParcelableExtra)

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

  11. #11
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: خطا در ارسال دیتا از یک اکتیویتی به اکتیویتی دیگر ؟

    کلاسی که بعنوان مدل ساختید رو به شکلی غییر بدید که اینترفیس Parcelable رو implement کنه.
    الان مشکلم توی گرفتم مقادیر از لیست ویو هست ... آیدی رو میگیره ولی بقیه رو نه !!؟

تاپیک های مشابه

  1. خطا در ارسال داده از يك برنامه به برنامه ديگر
    نوشته شده توسط tmaztmaz در بخش C#‎‎
    پاسخ: 1
    آخرین پست: یک شنبه 04 آبان 1393, 17:30 عصر
  2. سوال: ارسال دیتا از یک هاست به دیتابیس برروی هاست دیگر
    نوشته شده توسط فرامرز90 در بخش ASP.NET Web Forms
    پاسخ: 5
    آخرین پست: چهارشنبه 09 شهریور 1390, 00:18 صبح
  3. سوال: مشكل در انتقال ديتا از يك گريد به گريد ديگر
    نوشته شده توسط s_mokhtari در بخش C#‎‎
    پاسخ: 11
    آخرین پست: سه شنبه 04 آبان 1389, 14:11 عصر
  4. سوال: ارسال querystring از یک صفحه به صفحه دیگر در repeater
    نوشته شده توسط rahil_2008 در بخش ASP.NET Web Forms
    پاسخ: 6
    آخرین پست: دوشنبه 20 اردیبهشت 1389, 15:04 عصر
  5. پاسخ: 3
    آخرین پست: چهارشنبه 19 مهر 1385, 06:58 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •