ورود

View Full Version : تنها یک وب ویو در یک برنامه



kavous_kiani
جمعه 02 اسفند 1392, 09:36 صبح
دوستان!

فرض کنید من در برنامه خودم دویست لینک دارم. و مایلم این لینک‌ها حتماْ در برنامه خودم باز شود، بنابراین باید از وب ویو استفاده کنم.

طبیعاْ معقول نیست که دویست صفحه درست کنم، و در هر کدام یک وب ویو بگذارم.

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

فکر کنم اپلیکیشن گوگل و فیس بوک از همین سیستم استفاده کنند.

چه راه حلی وجود دارد؟ ظاهراً در وب ویو، آدرس صفحه باید در خود وب ویو داده شود.

آیا راهی وجود دارد که ما یک وب ویو در یک صفحه ایجاد کنیم، و لینک های مختلف برنامه را به آن صفحه ارجاع دهیم؟

با تشکر

kavous_kiani
جمعه 02 اسفند 1392, 10:01 صبح
استادان گرامی به این پست نگاه کنید و راهنمایی کنید:

لینک پست در استک اورفلو (http://stackoverflow.com/questions/7981927/how-can-i-open-my-links-in-one-webview-in-android?rq=1)

ممنون

smemamian
جمعه 02 اسفند 1392, 10:07 صبح
الان منظور شما اینه که کاربر وقتی روی هر لینکی کلیک می کنه، فقط و فقط یک وب ویوو باز کنه ؟
خب عملاً هم باید همینطور باشه دیگه ! یه کلاس می نویسی که از webview مشتق شده باشه
بعد وقتی که کاربر روی هر لینکی کلیک کرد، با یه Intent اون url رو واسه webview می فرستی تا
بازش کنه.

#root#
جمعه 02 اسفند 1392, 10:38 صبح
سلام

یادش بخیر منم یه زمانی آرزوم درست کردن همچین چیزی بود ولی هیشکی بهم کد نمیداد همش تئوری میگفتن هر ، چی التماس میکردم ولی عاقبتش اینجوری میشدم -> :عصبانی: ، و الان خیلی راضیم ازشون چون باعث شد برم دنبال یادگیری و ... بگذریم.

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

// اکتیویتی اول
Intent i = new Intent(context,ShowPage.class);
i.putExtra("id", 1);
startActivity(i);

// اکتیویتی دوم
Bundle extras = getIntent().getExtras();
int id = 0;

if (extras != null) {
id = extras.getInt("id");
}
// اینجا یه سوئیچ میزاری روی آی دی و صفحه مورد نظر رو نشون میدی

kavous_kiani
جمعه 02 اسفند 1392, 15:47 عصر
با تشکر از شما دوستان گرامی

گاهی هم نوآموزان، به ویژه اگر مثل من ۵۵ سال سن داشته باشند، مشکل‌شان تنبلی نیست، فقدان وقت است، و درگیری زندگی، و مسلط نبودن به زبان انگلیسی و غیره.

به نظر من یک سیستم آموزش خوب، یاد دادن با دادن چند نمونه مثال اجرایی توسط استاد و یادگیری نوآموز و به کارگیری آن در پروژه‌های بعدی است.

سیستم آزمایش و خطا عصرش سپری شده است.

شما یک نمونه کامل را آموزش دهید، مطمئن باشد من درپروژه بعدی به خوبی آن را بدون کمک اجرا می‌کنم.

از نقل خاطره هم متشکرم. زنده باشی

smemamian
جمعه 02 اسفند 1392, 16:17 عصر
سیستم آزمایش و خطا عصرش سپری شده است.

نه! برنامه نویسی با هر زبانی، نیاز به وقت گذاشتن داره، این خطاهای برنامه نویسی هستش که یک برنامه نویس رو برنامه نویس می کنه.
کل برنامه نویسی چندتا if else switch و... بیشتر نیست، و در هیچ سایت آموزشی اون ایده ی شما و خواسته ی شما رو پیاده سازی نکردن
پس باید انقدر آزمایش کنی تا به نتیجه ی مطلوبت برسی. در آخر، برنامه نویسی خوندن یک رمان نیست که از یکجا شروع کنی و به یک جا
ختم بشه، و نفر بعدی هم همین کار رو بکنه.موفق باشی.

#root#
جمعه 02 اسفند 1392, 16:31 عصر
خدمت شما :

public class MainActivity extends Activity {


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

Button b1 = (Button) findViewById(R.id.btn1);
b1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
Intent i = new Intent(v.getContext(),ShowPage.class);
i.putExtra("id", 1);
startActivity(i);

}
});
}
}

public class ShowPage extends Activity {

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

Bundle extras = getIntent().getExtras();
int id = 0;
if (extras != null) {
id = extras.getInt("id");
}
WebView wv = (WebView) findViewById(R.id.myWebView);

switch (id) {
case 1:
wv.loadUrl("file:///android_asset/page1.html");
break;
case 2:
wv.loadUrl("file:///android_asset/page2.html");
break;
case 4:
wv.loadUrl("file:///android_asset/page3.html");
break;
case 5:
wv.loadUrl("file:///android_asset/page4.html");
break;
default:
break;
}

}

}

البته به روش های دیگه هم میشه این کار رو پیاده سازی کرد ، مثل کمک گرفتن از آرایه ها و ...

rubiks.kde
جمعه 02 اسفند 1392, 17:10 عصر
گاهی هم نوآموزان، به ویژه اگر مثل من ۵۵ سال سن داشته باشند، مشکل‌شان تنبلی نیست، فقدان وقت است، و درگیری زندگی، و مسلط نبودن به زبان انگلیسی و غیره.

گاهی هم بهتره به جوان ها اعتماد کرد و کار رو به اون ها سپرد و مطمئن باشید تمام کسانی که در این جا فعالیت میکنند : مشکل‌شان تنبلی نیست، فقدان وقت است، و درگیری زندگی، و مسلط نبودن به زبان انگلیسی و غیره :چشمک:

kavous_kiani
جمعه 02 اسفند 1392, 19:14 عصر
جناب روت گرامی
ممنون از زحمات شما و دیگر دوستان.

در مورد قسمت اول کد شما :
من در صفحه دکمه ندارم، و کلیک را روی ایمج ویو انجام می دهم، الان که کد را گذاشتم، در قسمت findViewById خطا می دهد :

اخطار : The method findViewById(int) is undefined for the type HomeFragment<myImageview>

کد من این است :


ImageView myImageview = (ImageView) findViewById(R.id.organization);
myImageview.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
Intent i = new Intent(v.getContext(),ShowWeb.class);
i.putExtra("id", 1);
startActivity(i);

}
});


و کد کل اکتیویتی :



import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.widget.RelativeLayout;
import android.os.Handler;
import android.content.Intent;
import android.widget.ImageView;

public class HomeFragment<myImageview> extends Fragment {

public HomeFragment(){}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View rootView = inflater.inflate(R.layout.fragment_home, container, false);

return rootView;

// ---------------

/*ImageView myImageview =(ImageView)view.findViewById(R.id.organization);

myImageview.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

Intent myShowIntent = new Intent(getActivity(), ShowWeb.class);

startActivity(myShowIntent);
}
});*/

ImageView myImageview = (ImageView) findViewById(R.id.organization);
myImageview.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
Intent i = new Intent(v.getContext(),ShowWeb.class);
i.putExtra("id", 1);
startActivity(i);
}
});

//تعریف دکمه
/*ImageView myImageView =(ImageView) View.findViewById(R.id.organization);
// اجرای دستور کلیک روی دکمه
myImageView.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
Context context;
// تعریف اینتنت برای رفتن به صفحه مورد نظرمون
Intent myShowIntent = new Intent(context, ShowWeb.class);
//Bundle b = new Bundle();
//String theURL;
//b.putString("http://talar.shandel.info/", theURL);
//myShowIntent.putExtras(b);
// اجرای اینتنت
startActivity(myShowIntent);
}
});*/

// ---------------

// ---------------

//تعریف یک هندلر
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
finish();
//main : نام صفحه ای که میخوایم بعد از یک زمان مشخص واردش بشیم
startActivity(new Intent (getActivity(), PhotosFragment.class));
}
}, 7000); // مدت زمان بر حسب میلی ثانیه

// ---------------
}
}

saeed_g21
جمعه 02 اسفند 1392, 22:10 عصر
راستی قبلش حتما چک کن ببین اینترنت هست یا نه اگه هست که هیچ سایت رو بیاره بالا اگه نیست دیگه خطای عدم باز کردن سایت رو نده و با یک شکل خشگل به کاربر بگو دستگاهت اینترنت نداره

kavous_kiani
یک شنبه 04 اسفند 1392, 01:40 صبح
آقای روت گرامی!

این کد را قرار دادم، کار انجام شد :


ImageView myImageview =(ImageView) rootView.findViewById(R.id.organization);

myImageview.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

//Intent myShowIntent = new Intent (getActivity(), ShowWeb.class);

//Bundle b = new Bundle();
//String theURL = null;

//b.putString("http://talar.shandel.info/", theURL);
//myShowIntent.putExtras(b);

//startActivity(myShowIntent);
Intent i = new Intent(getActivity(),ShowWeb.class);
i.putExtra("id", 2);
startActivity(i);
}
});
return rootView;

با تشکر