رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

پست های پیشنهاد شده

سلام من موقع کلیک بر روی spinner با ارور مواجه میشم

public class Activity4 extends AppCompatActivity {



    private StoryDataSource datasource;
    private List<Matn> matnItems;
    private ListView listView1;
    private ArrayAdapter<Matn> adapter;
    private StoryContent content;
    private Spinner spiner;

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

        spiner = (Spinner) findViewById(R.id.spinner);
        datasource = new StoryDataSource(getBaseContext());
        Bundle extras = getIntent().getExtras();
        if (extras != null) {

            content = extras.getParcelable(".db");

            matnItems = datasource.getMatnItems(content);
            Toast.makeText(this, "totalPages = " + matnItems, Toast.LENGTH_SHORT).show();

        }

        refreshDisplay();
    }





    private void refreshDisplay(){

        adapter = new MatnListAdapter(this, R.layout.story_list_item1, matnItems);

        spiner.setAdapter(adapter);

    }
}

اداپتور

ublic class MatnListAdapter extends ArrayAdapter<Matn>{
	private int totalPages = 0;
	private int currentPageNo = 0;
	private StoryDataSource datasource;
	private Matn matn;
	private Context context;
	private int resourceId;
	private List<Matn> matnItems;

	public MatnListAdapter(Context context, int resourceId, List<Matn> matnItems) {
		super(context, resourceId, matnItems);

		this.context = context;
		this.resourceId = resourceId;
		this.matnItems = matnItems;


	}


	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		View view = inflater.inflate(resourceId, parent, false);

		final Matn item = matnItems.get(position);
		TextView txt_name = (TextView) view.findViewById(R.id.txt_name_listitem);


		txt_name.setText(item.getMatn());




		return view;
	}


}

ارور

04-14 07:56:46.919 1741-1741/com.example.asus.myapplication I/Story: Parcelable : write to Parcel2.
04-14 07:56:47.127 1741-1741/com.example.asus.myapplication W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
04-14 07:56:47.445 1741-1741/com.example.asus.myapplication I/Story: Parcelable CREATOR : createFromParcel2
04-14 07:56:47.452 1741-1741/com.example.asus.myapplication I/Story: database opened.
04-14 07:56:47.461 1741-1741/com.example.asus.myapplication I/Story: getMatnItems : Returned 2 rows.
04-14 07:56:47.463 1741-1741/com.example.asus.myapplication I/Story: database closed.
04-14 07:56:47.566 1741-1741/com.example.asus.myapplication I/Choreographer: Skipped 37 frames!  The application may be doing too much work on its main thread.
04-14 07:56:47.686 1741-1808/com.example.asus.myapplication W/EGL_emulation: eglSurfaceAttrib not implemented
04-14 07:56:47.686 1741-1808/com.example.asus.myapplication W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xe9a233c0, error=EGL_SUCCESS
04-14 07:56:47.860 1741-1741/com.example.asus.myapplication W/art: Before Android 4.1, method int android.support.v7.widget.ListViewCompat.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView
04-14 07:56:48.136 1741-1808/com.example.asus.myapplication W/EGL_emulation: eglSurfaceAttrib not implemented
04-14 07:56:48.136 1741-1808/com.example.asus.myapplication W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xe0770620, error=EGL_SUCCESS
04-14 07:56:48.255 1741-1808/com.example.asus.myapplication E/Surface: getSlotFromBufferLocked: unknown buffer: 0xf2ce3960
04-14 07:56:49.483 1741-1808/com.example.asus.myapplication E/Surface: getSlotFromBufferLocked: unknown buffer: 0xf2ce4f40
04-14 07:56:52.262 1741-1741/com.example.asus.myapplication E/ArrayAdapter: You must supply a resource ID for a TextView
04-14 07:56:52.262 1741-1741/com.example.asus.myapplication D/AndroidRuntime: Shutting down VM
                                                                              
                                                                              
                                                                              --------- beginning of crash
04-14 07:56:52.263 1741-1741/com.example.asus.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
                                                                              Process: com.example.asus.myapplication, PID: 1741
                                                                              java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
                                                                                  at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:393)
                                                                                  at android.widget.ArrayAdapter.getDropDownView(ArrayAdapter.java:448)
                                                                                  at android.widget.Spinner$DropDownAdapter.getDropDownView(Spinner.java:963)
                                                                                  at android.widget.Spinner$DropDownAdapter.getView(Spinner.java:959)
                                                                                  at android.widget.Spinner.measureContentWidth(Spinner.java:833)
                                                                                  at android.widget.Spinner$DropdownPopup.computeContentWidth(Spinner.java:1194)
                                                                                  at android.widget.Spinner$DropdownPopup.show(Spinner.java:1220)
                                                                                  at android.widget.Spinner.performClick(Spinner.java:758)
                                                                                  at android.support.v7.widget.AppCompatSpinner.performClick(AppCompatSpinner.java:441)
                                                                                  at android.view.View$PerformClick.run(View.java:21147)
                                                                                  at android.os.Handler.handleCallback(Handler.java:739)
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                  at android.os.Looper.loop(Looper.java:148)
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                               Caused by: java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.TextView
                                                                                  at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:386)
                                                                                  at android.widget.ArrayAdapter.getDropDownView(ArrayAdapter.java:448) 
                                                                                  at android.widget.Spinner$DropDownAdapter.getDropDownView(Spinner.java:963) 
                                                                                  at android.widget.Spinner$DropDownAdapter.getView(Spinner.java:959) 
                                                                                  at android.widget.Spinner.measureContentWidth(Spinner.java:833) 
                                                                                  at android.widget.Spinner$DropdownPopup.computeContentWidth(Spinner.java:1194) 
                                                                                  at android.widget.Spinner$DropdownPopup.show(Spinner.java:1220) 
                                                                                  at android.widget.Spinner.performClick(Spinner.java:758) 
                                                                                  at android.support.v7.widget.AppCompatSpinner.performClick(AppCompatSpinner.java:441) 
                                                                                  at android.view.View$PerformClick.run(View.java:21147) 
                                                                                  at android.os.Handler.handleCallback(Handler.java:739) 
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                                  at android.os.Looper.loop(Looper.java:148) 
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                                  at java.lang.reflect.Method.invoke(Native Method) 
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

  • مطالب مشابه

    • توسط aliazmoodeh
      سلام من یه آپی دارم یه قسمت وجود داره که اطلاعات رو از سرور میگیره و تو ریسایکلرویو نمایش میده من میخوام این اطلاعات رو تو حالت افلاین هم داشته باشم یعنی چی یعنی بتونم اطلاعاتی که از سرور گرفتم قبلا رو وقتی کاربر اینترنت بهش نمایش بدم دقیقن مثله تلگرام میگم ولی نمیدونم باید چیکار کنم اگر اموزشی در این رابط دارید بهم بگید یا سورسی دارید بهم بگید پولی یا رایگان باشه برام فرقی نمیکنه فقط میخوام مشکلمو حل کنه
    • توسط Zeynab Tri
      سلام. دوستان بنده یک عدد تازه کار در برنامه نویسی اندروید هستم و نمیدونم این ارور رو چطور حل کنم. ممنون میشم اگر کسی میتونه من رو راهنمایی کنه.عکسش رو گذاشتم.

    • توسط moein123
      سلام دوستان خوبین؟
      من برای آپ خودم ثبتنام و لاگین دارم میسازم
      ثبتنام کاربر به خوبی کار میکنه و مشکلی نداره
      ولی برای لاگین کردن نمیدونم چرا کار نمیکنه
      پیغام خطا هم نمیده
      ببینین این کد سمت سروری که نوشتم
      <?php if($_SERVER['REQUEST_METHOD']=='POST'){ $mail2=$_POST['mail']; $password=$_POST['pass']; require_once 'connect.php'; $sql = "SELECT * FROM register WHERE mail='$mail2' "; $response=mysqli_query($conn,$sql); $result=array(); $result['login']=array(); if(mysqli_num_rows($response)===1){ $row=mysqli_fetch_assoc($response); if(password_verify($password,$row['pass'])){ $index['name']=$row['name']; $index['mail']=$row['mail']; array_push($result['login'],$index); $result['okk']='1'; $result['message']='okk'; echo json_encode($result); mysqli_close($conn); }else{ $result['okk']='0'; $result['message']='error'; echo json_encode($result); mysqli_close($conn); } } } ?> و اینم کد های جاوای اندروید که نوشتم
      package com.android.register1; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.print.PageRange; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.Toast; import com.android.volley.AuthFailureError; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.StringRequest; import com.android.volley.toolbox.Volley; import com.google.android.material.snackbar.Snackbar; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.HashMap; import java.util.Map; public class loginn extends AppCompatActivity { EditText edt_username,edt_password_login; Button btn_login; ProgressBar my_progcess; static String url_login="http://192.168.1.103/register2/login.php"; LinearLayout my_manager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_loginn); find_all(); } private void find_all() { edt_username=findViewById(R.id.edt_username); edt_password_login=findViewById(R.id.edt_pass_login); my_progcess=findViewById(R.id.my_progcess_login); btn_login=findViewById(R.id.btn_login); my_manager=findViewById(R.id.my_manager); btn_login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String musername=edt_username.getText().toString().trim(); String mpassword=edt_password_login.getText().toString().trim(); if(!musername.isEmpty() || !mpassword.isEmpty()){ my_login(musername,mpassword); }else { edt_username.setError("username"); edt_password_login.setError("password"); } } }); } public void my_login(final String mail,final String pass){ my_progcess.setVisibility(View.VISIBLE); btn_login.setVisibility(View.GONE); StringRequest request=new StringRequest(Request.Method.POST, url_login, new Response.Listener<String>() { @Override public void onResponse(String response) { try { JSONObject jsonObject=new JSONObject(response); String message=jsonObject.getString("okk"); JSONArray jsonArray=jsonObject.getJSONArray("login"); if(message.equals("1")){ for (int i = 0; i <jsonArray.length() ; i++) { JSONObject jsonObject1=jsonArray.getJSONObject(i); String name=jsonObject1.getString("name").trim(); String mail=jsonObject1.getString("mail").trim(); Snackbar snackbar=Snackbar.make(my_manager, name+mail+"لاگین شدید",Snackbar.LENGTH_LONG); snackbar.getView().setTranslationY(-100); snackbar.show(); } } } catch (JSONException e) { e.printStackTrace(); Toast.makeText(loginn.this, "error1"+e.toString(), Toast.LENGTH_SHORT).show(); my_progcess.setVisibility(View.GONE); btn_login.setVisibility(View.VISIBLE); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Toast.makeText(loginn.this, "error2"+error.toString(), Toast.LENGTH_SHORT).show(); my_progcess.setVisibility(View.GONE); btn_login.setVisibility(View.VISIBLE); } }){ @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String,String>params=new HashMap<>(); params.put("mail",mail); params.put("pass",pass); return params; } }; RequestQueue requestQueue= Volley.newRequestQueue(this); requestQueue.add(request); } } ممنون میشم کمکم کنید 
    • توسط hossein1212
      سلام 
      من در اجرا شبیه ساز به مشکل زیر خورده ام راه حلی داره
      اینترنتم اوکیه ولی دانلود نمیکنه


    • توسط elecomco
      وقتی شما یک اپلیکیشن اندروید درست می کنید، باید یه جوری بفهمید که آیا برنامه ای که ساخته اید درست کار می کند یا نه؟ در این مقاله می خواهیم شما را با نحوه اشکال زدایی پروژه با ADB اندروید استودیو آشنا کنیم.   
      اجرا و اشکال زدایی یا دیباگ اپلیکیشن در یک دستگاه سخت افزاری با ADB اندروید 
      یکی از مسائل مهم بعد از ساخت برنامه اندروید، این است که همیشه قبل از انتشار اپلیکیشن برای کاربران، برنامه را بر روی یک دستگاه واقعی آزمایش کنید. به همین منظور در این مقاله می خواهیم شما را با نحوه تنظیم محیط توسعه اندروید یا همان پلتفرم اندروید استودیو (Android Studio) و دستگاه اندروید برای آزمایش و اشکال زدایی از طریق اتصال ( Android Debug Bridge  (ADB آشنا کنیم.
      Android Debug Bridge که با نام ADB اندروید یا پل اشکال زدایی اندروید نیز شناخته می شود یک ابزار تحت خط فرمان جهت ارتباط و کنترل شبیه ساز (Emulator) یا دستگاه اندرویدی متصل به سیستم است و دستورات کاربردی متعددی نظیر نصب برنامه بر روی محیط شبیه ساز ، دسترسی به فایل های مستقر بر روی شبیه ساز و … را برای برنامه نویس فراهم می کند تا بتواند اپلیکیشن خود را تست و اشکال زدایی کند.
      با استفاده از شبیه ساز اندروید (Android emulator)، می توانید برنامه خود را در نسخه های مختلف دستگاه های اندرویدی  با اندازه های مختلف صفحه نمایش آزمایش کنید.
      تنظیم دستگاه برای توسعه اپلیکیشن اندروید ساخته شده 
      قبل از شروع اشکال زدایی در دستگاه، چند کار وجود دارد که باید انجام دهید:
      Settings اپلیکیشن را باز کنید. سپس گزینه Developer options را انتخاب کنید. در نهایت USB debugging را انتخاب کنید. سیستم خود را برای شناسایی دستگاه خود تنظیم کنید. macOS: به تنظیمات اضافی لازم نیست. Ubuntu Linux: برای نصب پکیج adb از apt-get install استفاده کنید. این مجموعه ای پیش فرض از قوانین udev با حفظ جامعه برای همه دستگاه های اندروید را به شما می دهد. اطمینان حاصل کنید که در گروه plugdev هستید. اگر پیام خطای زیر را مشاهده کردید ، adb شما را در گروه plugdev پیدا نکرد:
      error: insufficient permissions for device: udev requires plugdev group membership از idاستفاده کنید تا ببینید چه گروه هایی در آن هستید. از  sudo usermod -aG plugdev $LOGNAME استفاده کنید تا خود را به گروه plugdev اضافه کنید.
      مثال زیر نحوه نصب بسته ابزارهای Android adb را نشان می دهد.
      error: insufficient permissions for device: udev requires plugdev group membership ویندوز: درایور USB را برای ADB نصب کنید. Chrome OS: به پیکربندی اضافی لازم نیست. به دستگاه خود متصل شوید 
      هنگامی که به USB تنظیم و وصل شده اید، می توانید بر روی Run در اندروید استودیو (Android Studio) کلیک کنید تا برنامه خود را روی دستگاه ایجاد و اجرا کنید.
      برای صدور دستورات همچنین می توانید از ADB اندروید استفاده کنید:
      تأیید کنید که دستگاه شما با اجرای دستور adb devices از فهرست  android_sdk/platform-tools/ متصل است. در صورت اتصال، دستگاه ذکر شده را مشاهده خواهید کرد. برای هدف قرار دادن دستگاه خود ، هر  adb command  را با فلگ -d صادر کنید. عیب یابی اتصال دستگاه با Connection Assistant
      Connection Assistant دستورالعمل های گام به گام برای کمک به شما در تنظیم و استفاده از دستگاه از طریق اتصال ADB فراهم می کند.
      برای شروع Tools > Connection Assistant را انتخاب کنید.
      Connection Assistant دستورالعمل ها، کنترل های in-context و لیستی از دستگاه های متصل را در یک سری صفحه در پنل Assistant ارائه می دهد. از دکمه های Next و Previous در پایین پنل Assistant استفاده کنید تا در صورت لزوم از طریق صفحات استفاده کنید:
      دستگاه خود را از طریق USB متصل کنید: Connection Assistant با این کار از شما خواسته می خواهد که دستگاه خود را از طریق USB متصل کنید و یک دکمه Rescan USB را فراهم می کند که با استفاده از آن می توانید اسکن جدیدی را برای دستگاه های متصل آغاز کنید. فعال کردن اشکال زدایی USB: ابزار Connection Assistan به شما می گوید چگونه می توانید USB را در گزینه های on-device developer فعال کنید. راه اندازی مجدد سرور ADB اندروید: سرانجام، اگر هنوز دستگاه خود را در لیست دستگاه های موجود نمی بینی، می توانید از دکمه Restart ADB server در آخرین صفحه Connection Assistan استفاده کنید. راه اندازی مجدد سرور ADB همچنین باعث می شود ADB اندروید دوباره دستگاه ها را اسکن کند. اگر هنوز دستگاه خود را در لیست دستگاههای موجود نمی بینید، مراحل عیب یابی را در قسمت بعدی این صفحه امتحان کنید. مشکلات اتصال USB را برطرف کنید
      اگر Connection Assistan دستگاه شما را از طریق USB تشخیص نمی دهد، می توانید مراحل عیب یابی زیر را برای حل این مشکل امتحان کنید:
      بررسی کنید که اندروید استودیو بتواند به Android Emulator متصل شود.
      برای بررسی اینکه آیا این مسئله به دلیل وجود مشکل اتصال بین Android Studio و Android Emulator ایجاد شده است ، این مراحل را دنبال کنید:
      AVD Manager را باز کنید. اگر قبلاً آنرا ندارید ، یک AVD جدید ایجاد کنید. شبیه ساز را با استفاده از AVD خود اجرا کنید. یکی از موارد زیر را انجام دهید: اگر اندروید استودیو (Android Studio) نمی تواند به شبیه ساز متصل شود ، آخرین ابزارهای Platform SDK را دانلود کنید و دوباره امتحان کنید. اگر شبیه ساز با موفقیت شروع شد ، کابل USB را بررسی کنید. کابل USB را بررسی کنید
      برای بررسی اینکه آیا مشکل ناشی از کابل USB معیوب ایجاد شده است ، مراحل موجود در این بخش را دنبال کنید.
      اگر کابل USB دیگری دارید:
      دستگاه را با استفاده از کابل ثانویه وصل کنید. بررسی کنید آیا دستیار اتصال اکنون می تواند دستگاه را تشخیص دهد یا خیر. اگر دستگاه شناسایی نشد ، کابل اولیه را دوباره امتحان کنید. اگر دستگاه هنوز شناسایی نشده است ، فرض کنید که مشکل دستگاه است و بررسی کنید که دستگاه برای توسعه تنظیم شده است یا خیر. اگر کابل USB دیگری ندارید اما دستگاه Android دیگری دارید:
      دستگاه ثانویه را به رایانه متصل کنید. اگر دستیار اتصال می تواند دستگاه ثانویه را تشخیص دهد ، فرض کنید که مشکل دستگاه اصلی است و بررسی کنید که آیا دستگاه برای توسعه تنظیم شده است یا خیر.
      اگر دستگاه ثانویه شناسایی نشود ، ممکن است مشکل در کابل USB باشد. بررسی کنید که دستگاه برای توسعه تنظیم شده است یا خیر 
      برای بررسی اینکه آیا مشکل ناشی از تنظیمات دستگاه ایجاد شده است ، این مراحل را دنبال کنید:
      مراحل موجود در بخش تنظیم دستگاه برای توسعه را دنبال کنید.  اگر این مشکل را برطرف نکرد، برای کمک به پشتیبانی مشتری OEM دستگاه تماس بگیرید. به نماینده پشتیبانی مشتری بگویید که دستگاه با استفاده از ADB به Android Studio وصل نخواهد شد. کلید امنیتی RSA 
      وقتی دستگاهی را اجرا می کنید که دارای سیستم عامل Android 4.2.2 (سطح API 17) یا بالاتر است، سیستم از طریق کادر محاوره ای به شما نشان می دهد که آیا می خواهید یک کلید RSA را بپذیرید که امکان اشکال زدایی از طریق این رایانه را بپذیرد یا خیر. این مکانیسم امنیتی از دستگاههای کاربر محافظت می کند زیرا تضمین می کند اشکال زدایی USB و سایر دستورات adb را نمی توان اجرا کرد مگر اینکه شما قادر به باز کردن قفل دستگاه و تأیید این پیام باشید.
  • فایل

×
×
  • اضافه کردن...