کلیدستان

نسخه‌ی کامل: نمایش نتیجه چند صفحه در یک webview (در برنامه نویسی اندروید)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام و خسته نباشید
من برنامه ای دارم که دارای صفحات مختلفی هست که هر صفحه دارای عناوینی هست که هر یک به یک متن که در یک webview نمایش داده میشود می روند.
در صفحه اصلی چند دکمه قرار دادم که کاربر روی هر دکمه کلیک میکنه وارد صفحه مرتبط با اون دکمه شده و با کلیک بر روی هر عنوانی که در اون صفحه است مطلب مورد نظر رو میبینه و میخونه.
سوالی که دارم این هست که من در حال حاضر 8 دکمه دارم که برای هر کدام از این دکمه ها یک صفحه برای نمایش لیست عناوین و یک صفحه برای نمایش محتوا ها (با کمک دستور putExtra) ی مرتبط با آن در نظر گرفته ام که مجموعا برای تمامی دکمه ها 16 تا activity شده است.آیا این کار مشکلی ندارد؟
در واقع برای هر دکمه یک صفحه دارای لیست عناون آن و یک صفحه دارای webview که با کد (getintExtra) فایل html مرتبط داده شده را میگیرد و در webview نمایش میدهد.این کار درست است یا میشود یک webview برای تمامی صفحات درست کرد به همین روش؟
سلام.
بهتر است که تنها یک Activity برای نمایش محتوای صفحات داشته باشیم. یعنی آن Activity دارای یک عنصر WebView خواهد بود و یک مقدار را دریافت کرده و صفحه متناظر با آن مقدار (عدد) دریافت شده را در WebView نمایش می دهد.
اگر برای هر مبحث، یک سری عنوان دارید، می توانید که یک Activity هم برای نمایش لیست عنوان های هر مبحث داشته باشید، یعنی شامل یک ListView خواهد بود و شماره مبحث را دریافت کرده و لیست عنوان های متناظر با آن را نمایش می دهد. البته معمولا یک لیست اصلی شامل عنوان مبحث ها داریم، ولی این طور که گفتید، به نظر میاد یک لیست عنوان هم برای هر مبحث دارید که به همین شکل که شرح دادم، می توانید تنها از یک Activity استفاده کنید.

با تشکر
مشکلی که من دارم این است که هر لیست ویو یک سری آدرس را به وب ویو میدهد و وب ویو هم از طریق آدرس های داده شده صفحات را نمایش میدهد اما نمیدونم چطور همین وب ویو آدرس activity های دیگر رو هم بگیره و نشون بده چون وقتی این کار رو کردم وب ویو نتایج یک صفحه رو برای صفحه دیگر هم نمایش میدهد.

کد پی‌اچ‌پی:
web2.getSettings().setJavaScriptEnabled(true);
        
int pos getIntent().getIntExtra("key"0);
        if (
pos == 0) {
            
web2.loadUrl("file:///android_asset/can/canone.html");
        } else if (
pos == 1) {
            
web2.loadUrl("file:///android_asset/can/cantwo.html");
        } else if (
pos == 2) {
            
web2.loadUrl("file:///android_asset/can/canthree.html");
        } 

کدهای بالا کدهای صفحه webView ام هستند که سه فایل را گرفته و با توجه به شماره لیست ویو نمایش می دهند ولی چطور این صفحه را تنظیم کنم تا کدهای مربوط به html دیگر صفحات رو هم بگیره.
به جای یک متغیر، دو متغیر را به Activity مورد نظر ارسال کنید. سپس بر اساس دو متغیر دریافت شده، حالت بندی خواهیم داشت. مثلا یک متغیر که شماره متناظر با مبحث را تعیین کند و یک متغیر هم نشان دهد که چندمین آدرس از آن مبحث مورد نظرمان بوده. بعد بر اساس این دو شماره، فایل html مناسب در WebView نمایش داده می شود. برای ذخیره آدرس ها (اگر تعدادشان زیاد است)، می توانید از آرایه (Array) استفاده کنید :

http://www.kelidestan.com/keys/categorie...ategory=44

کدهای من به صورت زیر هستند

کد پی‌اچ‌پی:
public String[] values = new String[] {"dianum 1",
            
"dianum 2","dianum 3","dianum 4","dianum 5","dianum 6","dianum 7","dianum 8","dianum 9"};

    @
Override
    
protected void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        
setContentView(R.layout.activity_first__page);
        
        
setListAdapter(new MyAdapter(this,android.R.layout.simple_list_item_1,R.id.textView1,values));

        
// Assign adapter to ListView
        
lv getListView();
        
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @
Override
            
public void onItemClick(AdapterView<?> parent, final View view,
                int position, long id) {                        
                Intent myIntent = new Intent(first_Page.this,webview_sec.class);
                myIntent.putExtra("key",position);
                startActivity(myIntent);    
            }

        });
    } 

و کدهای صفحه دریافت کننده کدها برای نمایش در webview

کد پی‌اچ‌پی:
setContentView(R.layout.activity_webview_sec_sec);
        
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        
web2 = (WebViewfindViewById(R.id.myWeb2);
        
web2.setBackgroundColor(0);
        
web2.setWebViewClient(new myWebClient());
        
web2.getSettings().setJavaScriptEnabled(true);
        
int pos getIntent().getIntExtra("key"0);
        if (
pos == 0) {
            
web2.loadUrl("file:///android_asset/chol/cholone.html");
        } else if (
pos == 1) {
            
web2.loadUrl("file:///android_asset/chol/choltwo.html");
        } else if (
pos == 2) {
            
web2.loadUrl("file:///android_asset/chol/cholthree.html");
        } else if (
pos == 3) {
            
web2.loadUrl("file:///android_asset/chol/cholfour.html");
        }else if (
pos == 4) {
            
web2.loadUrl("file:///android_asset/chol/cholfive.html");
        } 

میتونم خواهش کنم توضیح بیشتری بدهید
چون من به این سبک عمل کردم و حتی در ادامه کدهای صفحه وب ویو آدرس مربوط به فایل های html صفحات بعد رو با تغییر نام متغیر int اضافه کردم (به جای pos نام دیگری انتخاب کردم و putextra را هم به جای "key" نام دیگری گذاشتم ولی وقتی برنامه اجرا شد یک سری کد درست در صفحه webview نمایش داده میشوند اما باقی صفحاتی که آدرس htmlشان را اضافه کردم فایل ها درست آدرس نمیگیرند و همه ی صفحات فقط یک html را نمایش می دهند
ممنون
البته به اشتباه آرایه صفحه دیگری را گذاشتم.آرایه های این وب ویو باید تا 5 عدد باشند.
احتمالا مقدار (مقداری که برای pos دریافت می کنیم) به درستی به Activity مورد نظر ارسال نمی شود. بنابراین در این مواقع، ابتدا یاید مقدار pos را با روشی چک کنیم و ببینیم که برابر چیست. مثلا آن را در یک پیام Toast نمایش بدهید یا Log نویسی کنید یا ... .
این طور هم که کدهاتون رو دیدم، به نظر می یاد ارسال مقدار رو اشتباه نوشتید (حدس می زنم). در این مورد، لینک زیر را ببینید :

http://stackoverflow.com/questions/54241...sulting-in

چون مقدار به درستی ارسال نمیشه، بنابراین مقدار پیش فرض (وقتی مقدار به درستی دریافت نشود) در pos ذخیره می شود، یعنی مقدار 0 که در دستور به عنوان مقدار پیش فرض تعیین شده :

کد پی‌اچ‌پی:
int pos getIntent().getIntExtra("key"0); 

در نتیجه، همیشه تنها اولین صفحه را می بینیم (اولین صفحه html در WebView نمایش داده می شود). 

برای ارسال مقدار به صورت رشته (String)، کلید زیر نوشته شده است (البته شما مقدار position را به صورت int ارسال کردید و فقط خواستم این کلید رو هم ذکر کنم) :

کلید شماره 236

سلام و خسته نباشید
در کلید 236 برای فرستادن چند آدرس html با هم به صفحه بعد چگونه باید عمل کرد؟
در این کلید برای یک آیتم آموزش داده شده، چطور چند آیتم را به صفحه بعد باهم انتقال دهیم که اگر بر روی listview کلیک شد آیتم مربوطه باز شود.
کلید مورد نظر که در مورد ارسال یک مقدار تنها بود را بازنویسی کردم و چگونگی ارسال عدد (int) را هم در آن برایتان ذکر کردم :

کلید شماره 236

همچنین برای ارسال چند مقدار، یک کلید جدید نوشتم که در مورد ارسال یک آرایه (Array) با همان روش می باشد :

کلید شماره 3018