انجمن سایت کلیدستان



عدم نمایش کلمات فارسی در webview (در برنامه نویسی اندروید)زمان کنونی: ۱۳۹۵/۰۹/۲۱، ۱۲:۲۷ ب.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: hassan8971
آخرین ارسال: reza5791
پاسخ 12
بازدید 2964

رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
عدم نمایش کلمات فارسی در webview (در برنامه نویسی اندروید)

عدم نمایش کلمات فارسی در webview (در برنامه نویسی اندروید)

#1
سلام.خسته نباشید.
من یک وب ویو دارم و کدهاشو توی یه رشته string ذخیره کردم و با استفاده از

کد پی‌اچ‌پی:
wb.loadData(Stringname"text/html" ,null); 

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

عدم نمایش کلمات فارسی در webview (در برنامه نویسی اندروید)

#2
سلام.
WebView برای نمایش صفحات وب که بر پایه HTML هستند به کار می رود، بنابراین باید کد مورد نظرتان را در کد قالب استاندارد برای HTML نوشته و نوع کدینک کاراکترها را هم برابر UTF-8 قرار بدهید. کد HTML استاندارد صفحه می تواند به صورت زیر باشد :

کد پی‌اچ‌پی:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Untitled Document</title>
</
head>

<
body>
</
body>
</
html

شما کد یا متن مورد نظرتان را باید بین دو تگ body (زوج تگ body) بنویسید.
3 تا رشته (String) تعریف کنید. اولی شامل کد زیر :

کد پی‌اچ‌پی:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Untitled Document</title>
</
head>

<
body

دومی شامل همان کد یا متن مورد نظرتان (که می تواند متغیر باشد) و سومی شامل کد زیر خواهد بود :

کد پی‌اچ‌پی:
</body>
</
html

بنابراین قبل از نمایش در WebView ، سه رشته (String) را به هم الحاق کرده و بعد رشته حاصل را در WebView بارگذاری می کنید.

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

عدم نمایش کلمات فارسی در webview (در برنامه نویسی اندروید)

#3
سلام ممنون از راهنماییتون.ولی بازم مشکل حل نشد.ببینید تمام کد هایی که من نوشتم:

کد پی‌اچ‌پی:
final WebView    web = (WebView)findViewById(R.id.webView1);
        
web.setWebViewClient(new WebViewClient());
        
web.getSettings().setLoadWithOverviewMode(true);
        
web.getSettings().setUseWideViewPort(true);
        
web.getSettings().setBuiltInZoomControls(true);
        
web.getSettings().setDefaultTextEncodingName(code_l);
        
web.getSettings().setDefaultFontSize(50);
        
        
        final 
String c1 "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'><html xmlns='http://www.w3.org/1999/xhtml'><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8' /><title>Untitled Document</title></head><body>";
       final 
String c2 "</body></html>";


et = (EditText)findViewById(R.id.editText1);



String editText_input et.getText().toString();
           
           
           
String all c1 editText_input c2;
           
           
web.loadData(all "text/html"null); 

با این حال باز هم متن فارسی به صورت زیر نمایش داده میشه:

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

عدم نمایش کلمات فارسی در webview (در برنامه نویسی اندروید)

#4
خط زیر از کدها را حذف کنید :

کد پی‌اچ‌پی:
web.getSettings().setDefaultTextEncodingName(code_l); 

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

عدم نمایش کلمات فارسی در webview (در برنامه نویسی اندروید)

#5
سلام دوست عزیز اگه میخوای یه کتاب بنویسی و میخوای کلماتی که توش مینویسی فارسی نمایش بدن میتونی این کد رو توی جاوا بنویسی

کد پی‌اچ‌پی:
book = (ViewGroupfindViewById(R.id.book);

        
//testTextView();
        
testWebView();
    }


    private 
void testWebView() {
        
String content readContent("content/session2.html");
        final 
WebView webView = new WebView(this);
        
book.addView(webView);
        
webView.loadDataWithBaseURL("file:///android_asset/"content"text/html""UTF-8""");
    }


    private 
void testTextView() {
        
String content readContent("content/session2.html");
        final 
TextView textView = new TextView(this);
        
textView.setMovementMethod(LinkMovementMethod.getInstance());
        
textView.setGravity(Gravity.RIGHT);
        
textView.setLinksClickable(true);
        
textView.setText(Html.fromHtml(content));
        
book.addView(textView);
    }


    private 
String readContent(String contentUrl) {
        
InputStream inputStream null;
        try {
            
inputStream getResources().getAssets().open(contentUrl);
            
String sample streamToString(inputStream);
            return 
sample;
        }
        catch (
IOException e) {
            
e.printStackTrace();
        } 
finally {
            if (
inputStream != null) {
                try {
                    
inputStream.close();
                }
                catch (
IOException e) {
                    
e.printStackTrace();
                }
            }
        }

        return 
null;

    }


    private 
String streamToString(InputStream inputStream) {
        
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        
StringBuilder stringBuffer = new StringBuilder();

        
String line null;
        try {
            while ((
line bufferedReader.readLine()) != null) {
                
stringBuffer.append((line "\n"));
            }
        }
        catch (
IOException e) {
            
e.printStackTrace();
        } 
finally {
            try {
                
inputStream.close();
            }
            catch (
IOException e) {
                
e.printStackTrace();
            }
        }
        return 
stringBuffer.toString(); 

البته مسیر Html من در پوشه ی asset توی فولدر asset پوشه ای به نام content هستش

کد پی‌اچ‌پی:
"file:///android_asset/"content"text/html" 

 و در قسمت پایین اسم اون جایی که میخوام متنو بنویسم session2 هستش        ادامشو برات تو پیام بعدی مینویسم

کد پی‌اچ‌پی:
String content readContent("content/session2.html"); 
پاسخ
 سپاس شده توسط admin

عدم نمایش کلمات فارسی در webview (در برنامه نویسی اندروید)

#6
خوب در ادامه کارمون با جاوا تموم شد حلا باید فایل main رو باز کنی و توش این کدا رو بزاری

کد پی‌اچ‌پی:
<LinearLayout
        android
:id="@+id/book"
        
android:layout_width="match_parent"
        
android:layout_height="wrap_content" >

    </
LinearLayout

خوب کارت تموم شد برو سراغ اون Html که ساختی که من داخل فولدر asset ساختمش وارد اون شو و این تنظیماتی که بهت میدم توش بنویس تا کارت راه بیوفته و بتونی توش فارسی بنویسی

کد پی‌اچ‌پی:
<html>
<
head>
<
meta charset="UTF-8">
<
style>
@
font-face
    
font-family'yekan';
    
srcurl('font/test.svg'format('svg');
}

* {
    
text-alignjustify;
    
color#fff;
    /*font-family: yekan;*/
}

htmlbody {
    
font-size12px;
    
background-color#000;
}

.
ltr {
    
directionltr;
}

.
rtl {
    
directionrtl;
}

.
wideLine {
    
line-height2.0em;
}

h2 {
    
color#f80;
}

</
style>
</
head

تموم شد .موفق باشی
پاسخ
 سپاس شده توسط admin ، داش بهروز

عدم نمایش کلمات فارسی در webview (در برنامه نویسی اندروید)

#7
سلام.ممنون از راهنمایی هاتون.آقا ادمین بنده هم کدی که گفتید حذف کنم رو برای نمایش کلمات فارسی نوشته بودم که مقدار متغیر برابر utf-8 بود که با حذف کردنش بازم درست نشد ... 
آقا امیر حسین از راهنمایی شما هم ممنونم ولی من میخوام کدهایی که تو متغیر ذخیره شده رو نشون بدم و از روی فایل نمیخوام ...
گفتند که تک سوارمان در راه است
از اول صبح چشممان بر راه است
از یازدهم دوازده قرن گذشت
تا ساعت تو چقدر دیگر راه است؟
اللهم عجل لولیک الفرج ...
پاسخ

عدم نمایش کلمات فارسی در webview (در برنامه نویسی اندروید)

#8
(۱۳۹۴/۰۴/۰۵, ۰۷:۵۷ ب.ظ)'hassan8971' نوشته: سلام.ممنون از راهنمایی هاتون.آقا ادمین بنده هم کدی که گفتید حذف کنم رو برای نمایش کلمات فارسی نوشته بودم که مقدار متغیر برابر utf-8 بود که با حذف کردنش بازم درست نشد ... 

 

سلام.
متن را چگونه ذخیره کرده اید ؟
همچنین کد متناظر با آن (نحوه ذخیره شدن) و کد فراخوانی (نحوه فراخوانی و قرار دادن در String) را ذکر کنید.
در ضمن، بد نیست یک بار متن را در TextView تست کنید. اگر در TextView هم مشکل داشته باشد، یعنی مشکل اصلی از نحوه ذخیره سازی متن است (موقع ذخیره شدن، کاراکترها تغییر می کنند).

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

عدم نمایش کلمات فارسی در webview (در برنامه نویسی اندروید)

#9
سلام.بازم ممنون از راهنمایی هاتون.
مشکلم حل شد
گفتند که تک سوارمان در راه است
از اول صبح چشممان بر راه است
از یازدهم دوازده قرن گذشت
تا ساعت تو چقدر دیگر راه است؟
اللهم عجل لولیک الفرج ...
پاسخ

عدم نمایش کلمات فارسی در webview (در برنامه نویسی اندروید)

#10
با سلام
بنده اماتور و مبتدی هستم خواهشا به صورت حرفه ای جواب ندید. من تمامی مشکلات ایجاد برنامه به شیوه ای که از سرورهای انلاین که به زبان php نوشته شده اند رو برطرف کرده ام و برنامه نصب و اجرا می شود محتویات در textview کاملا فارسی نمایش داده می شود اما در قسمت webview دقیقا این مشکل رو دارم که از راهنمایی های شما هم استفاده کردم اما مشکلم حل نشد
کد مربوط به تگ phpرودر صفحه inde.php وارد کردم..
در سمت کدهای جاوا این کد رو دارم

کد پی‌اچ‌پی:
webview.setBackgroundColor(Color.parseColor("#ffffff"));
        
webview.getSettings().setBuiltInZoomControls(true);
        
webview.getSettings().setJavaScriptEnabled(true);
    
webview.getSettings().setDefaultTextEncodingName("UTF-8");
        
String mimeType "text/html";
        
String encoding "utf-8";
        
String htmlText mdesc;

        
String text "<html><head>"
                
"<style type=\"text/css\">body{color: #000000;}"
                
"</style></head>"
                
"<body>"                          
                
+  htmlText
                
"</body></html>";

        
webview.loadData(textmimeTypeencoding); 

من اون کد مورد نظر شما رو حذف کردم اما نتیجه ای نداد

کد پی‌اچ‌پی:
webview.getSettings().setDefaultTextEncodingName("UTF-8"); 
پاسخ

عدم نمایش کلمات فارسی در webview (در برنامه نویسی اندروید)

#11
(۱۳۹۴/۰۷/۲۲, ۰۵:۱۳ ب.ظ)'reza5791' نوشته: با سلام
بنده اماتور و مبتدی هستم خواهشا به صورت حرفه ای جواب ندید. من تمامی مشکلات ایجاد برنامه به شیوه ای که از سرورهای انلاین که به زبان php نوشته شده اند رو برطرف کرده ام و برنامه نصب و اجرا می شود محتویات در textview کاملا فارسی نمایش داده می شود اما در قسمت webview دقیقا این مشکل رو دارم که از راهنمایی های شما هم استفاده کردم اما مشکلم حل نشد
کد مربوط به تگ phpرودر صفحه inde.php وارد کردم..
در سمت کدهای جاوا این کد رو دارم

کد پی‌اچ‌پی:
webview.setBackgroundColor(Color.parseColor("#ffffff"));
        
webview.getSettings().setBuiltInZoomControls(true);
        
webview.getSettings().setJavaScriptEnabled(true);
    
webview.getSettings().setDefaultTextEncodingName("UTF-8");
        
String mimeType "text/html";
        
String encoding "utf-8";
        
String htmlText mdesc;

        
String text "<html><head>"
                
"<style type=\"text/css\">body{color: #000000;}"
                
"</style></head>"
                
"<body>"                          
                
+  htmlText
                
"</body></html>";

        
webview.loadData(textmimeTypeencoding); 

من اون کد مورد نظر شما رو حذف کردم اما نتیجه ای نداد

کد پی‌اچ‌پی:
webview.getSettings().setDefaultTextEncodingName("UTF-8"); 

 


سلام.
شما چارچوب استاندارد HTML را به کار نبرده اید (تنها تگ های html و head و body ذکر شده است). 
چارچوب استاندارد HTML :

کد پی‌اچ‌پی:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Untitled Document</title>
</
head>

<
body>
</
body>
</
html

که بخش مهم آن برای نمایش کلمات فارسی، خط زیر می باشد (البته دیدم utf-8 را برای WebView ذکر کرده اید، ولی آن را در چارچوب HTML نیز به صورت زیر درج کنید) :

کد پی‌اچ‌پی:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

------------------------------

در مواردی که کلمات فارسی به درستی در TextView نمایش داده می شوند، مشکل در کدنویسی کد HTML و نمایش در WebView است و خود متن مشکلی ندارد.

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

عدم نمایش کلمات فارسی در webview (در برنامه نویسی اندروید)

#12
با سپاس از توجه شما.. من نکاتی رو که گفتید رو اجرا کرده ام .. مباحث این پرسش رو هم بارها خوندم ولی باز نتیجه ای نداد
این کد صفحه index.php سرور ساید من که بدین شکل می باشد
کد پی‌اچ‌پی:
<?php 
            $filename 
'includes/db_connection.php';
            
            if(!
file_exists($filename)){        
            
                
header("location:installation/index.php");
                exit;
            }
              
            include(
'includes/db_connection.php');            
            include(
'common.php');
            include(
'messages/messages.php');
            
            
mysql_query("SET NAMES 'utf8'");
            
            
$admin_sql "select * from tbl_general";
            
$admin_mysql mysql_query($admin_sql);
            
$admin_row mysql_fetch_array($admin_mysql);
            
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!-- <!DOCTYPE html> -->
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <!-- start: Meta 
    <meta charset="utf-8"> -->
    <title><?php if($admin_row['project_title']!=""){echo $admin_row['project_title'];}else{ echo "App Project";}?></title>
     
    <!-- end: Meta -->
    
    <!-- start: Mobile Specific -->
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- end: Mobile Specific -->
    
    <!-- start: CSS -->
    <link id="bootstrap-style" href="css/bootstrap.min.css" rel="stylesheet">
    <link href="css/bootstrap-responsive.min.css" rel="stylesheet">
    <link id="base-style" href="css/style.css" rel="stylesheet">
    <link id="base-style-responsive" href="css/style-responsive.css" rel="stylesheet">
    <link href='http://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800&subset=latin,cyrillic-ext,latin-ext' rel='stylesheet' type='text/css'>
    <!-- end: CSS -->
    

    <!-- The HTML5 shim, for IE6-8 support of HTML5 elements -->
    <!--[if lt IE 9]>
          <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
        <link id="ie-style" href="css/ie.css" rel="stylesheet">
    <![endif]-->
    
    <!--[if IE 9]>
        <link id="ie9style" href="css/ie9.css" rel="stylesheet">
    <![endif]-->
        
    <!-- start: Favicon -->
    <link rel="shortcut icon" href="img/favicon.ico">
    <!-- end: Favicon -->
    
            <style type="text/css">
            body { background: url(img/bg-login.jpg) !important; }
        </style>
        
        
        
</head>

<body>
        <div class="container-fluid-full">
        <div class="row-fluid">
                    
            <div class="row-fluid">
              <div class="login-box">
                <h2>Login</h2>
                <p style="color:#990000; font-size:14px;" align="center">
                  <?php if(isset($_SESSION['msg'])){ 
                    
                            echo 
$admin_lang[$_SESSION['msg']] ; 
                            unset(
$_SESSION['msg']);        
                            
                    }
?>
                </p>
                <form class="form-horizontal" action="login_db.php" method="post">
                  <fieldset>
                  <div class="input-prepend" title="Username"> <span class="add-on"><i class="halflings-icon user"></i></span>
                      <input class="input-large span10" name="username" id="username" type="text" placeholder="type username"/>
                  </div>
                  <div class="clearfix"></div>
                  <div class="input-prepend" title="Password"> <span class="add-on"><i class="halflings-icon lock"></i></span>
                      <input class="input-large span10" name="password" id="password" type="password" placeholder="type password"/>
                  </div>
                  <div class="button-login">
                    <button type="submit" class="btn btn-primary">Login</button>
                  </div>
                  <div class="clearfix"></div>
                </form>
              </div>
              <!--/span-->
</div>
            <!--/row-->
            

    </div><!--/.fluid-container-->
    
        </div><!--/fluid-row-->
    
    <!-- start: JavaScript-->

        <script src="js/jquery-1.9.1.min.js"></script>
    <script src="js/jquery-migrate-1.0.0.min.js"></script>
    
        <script src="js/jquery-ui-1.10.0.custom.min.js"></script>
    
        <script src="js/jquery.ui.touch-punch.js"></script>
    
        <script src="js/modernizr.js"></script>
    
        <script src="js/bootstrap.min.js"></script>
    
        <script src="js/jquery.cookie.js"></script>
    
        <script src='js/fullcalendar.min.js'></script>
    
        <script src='js/jquery.dataTables.min.js'></script>

        <script src="js/excanvas.js"></script>
    <script src="js/jquery.flot.js"></script>
    <script src="js/jquery.flot.pie.js"></script>
    <script src="js/jquery.flot.stack.js"></script>
    <script src="js/jquery.flot.resize.min.js"></script>
    
        <script src="js/jquery.chosen.min.js"></script>
    
        <script src="js/jquery.uniform.min.js"></script>
        
        <script src="js/jquery.cleditor.min.js"></script>
    
        <script src="js/jquery.noty.js"></script>
    
        <script src="js/jquery.elfinder.min.js"></script>
    
        <script src="js/jquery.raty.min.js"></script>
    
        <script src="js/jquery.iphone.toggle.js"></script>
    
        <script src="js/jquery.uploadify-3.1.min.js"></script>
    
        <script src="js/jquery.gritter.min.js"></script>
    
        <script src="js/jquery.imagesloaded.js"></script>
    
        <script src="js/jquery.masonry.min.js"></script>
    
        <script src="js/jquery.knob.modified.js"></script>
    
        <script src="js/jquery.sparkline.min.js"></script>
    
        <script src="js/counter.js"></script>
    
        <script src="js/retina.js"></script>

        <script src="js/custom.js"></script>
    <!-- end: JavaScript-->
    
</body>
</html> 
در کدهای بالا بنا به دانش اندک بنذه تمامی چهارچوب ها رو رعایت کرده ام
اما این هم کد صفحه نمایش ایتم ها با وب ویو و تکست ویو جاوا در پروژه اندروید می باشد
کد پی‌اچ‌پی:
package com.apps.bastakmusic;

import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.Settings.Secure;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.RatingBar;
import android.widget.RatingBar.OnRatingBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;

import com.example.imageloader.ImageLoader;
import com.example.item.ItemRelated;
import com.example.item.Item_MovieList;
import com.example.util.AlertDialogManager;
import com.example.util.Constant;
import com.example.util.JsonUtils;
import com.example.util.SessionManager;

public class 
MovieDetailsActivity extends ActionBarActivity{

    
Toolbar toolbar;
    
TextView txt_mname,txt_mdate,txt_mcast,txt_mview;
    
WebView webmdetail;
    
ImageView img_moview;
    
int position;
    
String Id,mid,mcid,mgid,mtitle,mcast,mimg,mdesc,mdate,mview,mrate;
    
AlertDialogManager alert = new AlertDialogManager();
    public 
ImageLoader imageLoader
    List<
Item_MovieListarrayOfHome;
    
Item_MovieList objAllBean;
    List<
ItemRelatedarrayofRelated;
    
ItemRelated objChildBean;
    
LinearLayout linear,linearContent;
    
ProgressBar pbar;
    
String rate_msg;

    @
Override
    
protected void onCreate(Bundle savedInstanceState) {
        
// TODO Auto-generated method stub
        
super.onCreate(savedInstanceState);
    
//    StartAppAd.init(this, getString(R.string.startapp_dev_id), getString(R.string.startapp_app_id,false));
        
setContentView(R.layout.moviedetail_activity);
        
toolbar = (android.support.v7.widget.Toolbarthis.findViewById(R.id.toolbar);
        
//toolbar.setTitle(Constant.CATEGORY_NAMEE);
        
this.setSupportActionBar(toolbar);
        
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        
getSupportActionBar().setDisplayShowHomeEnabled(true);
        
imageLoader=new ImageLoader(MovieDetailsActivity.this);

    
//    StartAppAd.showSlider(this);

        
Constant.DEVICE_ID=Secure.getString(MovieDetailsActivity.this.getContentResolver(),
                
Secure.ANDROID_ID);
        
//Log.e("Device Id", Constant.DEVICE_ID);

        
txt_mname=(TextView)findViewById(R.id.txt_mname);
        
txt_mdate=(TextView)findViewById(R.id.txt_mdate);
        
txt_mcast=(TextView)findViewById(R.id.txt_mcast);
        
txt_mview=(TextView)findViewById(R.id.txt_mview);
        
img_moview=(ImageView)findViewById(R.id.img_mvoiew);
        
webmdetail=(WebView)findViewById(R.id.webView1);
        
linear=(LinearLayout)findViewById(R.id.content);
        
linearContent=(LinearLayout)findViewById(R.id.rel_c_content);

        
arrayOfHome=new ArrayList<Item_MovieList>();
        
arrayofRelated=new ArrayList<ItemRelated>();

        if (
JsonUtils.isNetworkAvailable(MovieDetailsActivity.this)) {
            new 
MyTask().execute(Constant.SINGLEMOVIE_URL+Constant.CATEGORYLIST_IDD);
        } else {
            
showToast(getString(R.string.conn_msg3));
            
alert.showAlertDialog(MovieDetailsActivity.thisgetString(R.string.conn_msg4),
                    
getString(R.string.conn_msg2), false);
        }

        if (
JsonUtils.isNetworkAvailable(MovieDetailsActivity.this)) {
            new 
MyTaskView().execute(Constant.VIEWCOUNT_URL+Constant.DEVICE_ID+"&movie_id="+Constant.CATEGORYLIST_IDD);
            
//Log.e("rate", ""+Constant.RATING_URL+Constant.DEVICE_ID+"&movie_id="+Constant.CATEGORYLIST_IDD);
        
} else {
            
showToast("پیوند به اینترنت یافت نشد");
            
alert.showAlertDialog(MovieDetailsActivity.this"خطای پیوند به اینترنت",
                    
"اینترنت خود را وصل کنید"false);
        }     

    }

    private    class 
MyTask extends AsyncTask<StringVoidString> {

        
ProgressDialog pDialog;

        @
Override
        
protected void onPreExecute() {
            
super.onPreExecute();

            
pDialog = new ProgressDialog(MovieDetailsActivity.this);
            
pDialog.setMessage("در حال بارگذاری...");
            
pDialog.setCancelable(false);
            
pDialog.show();
        }

        @
Override
        
protected String doInBackground(String... params) {
            return 
JsonUtils.getJSONString(params[0]);
        }

        @
Override
        
protected void onPostExecute(String result) {
            
super.onPostExecute(result);

            if (
null != pDialog && pDialog.isShowing()) {
                
pDialog.dismiss();
            }

            if (
null == result || result.length() == 0) {
                
showToast("خطای اتصال به سرور");
                
alert.showAlertDialog(MovieDetailsActivity.this"اتصال به سرور شکست خورد",
                        
"سرور برنامه یا اینترنت ضعیف باعث این خطا می باشد"false);

            } else {

                try {
                    
JSONObject mainJson = new JSONObject(result);
                    
JSONArray jsonArray mainJson.getJSONArray(Constant.CATEGORY_ARRAY_NAME);
                    
JSONObject objJson null;
                    for (
int i 0jsonArray.length(); i++) {
                        
objJson jsonArray.getJSONObject(i);

                        
Item_MovieList objItem = new Item_MovieList();

                        
objItem.setCLID(objJson.getString(Constant.CATEGORYLIST_ID));
                        
objItem.setCLCID(objJson.getString(Constant.CATEGORYLIST_CID));
                        
objItem.setCLGID(objJson.getString(Constant.CATEGORYLIST_GID));
                        
objItem.setCLTITLE(objJson.getString(Constant.CATEGORYLIST_TITLE));
                        
objItem.setCLMCAST(objJson.getString(Constant.CATEGORYLIST_MCAST));
                        
objItem.setCLMIMG(objJson.getString(Constant.CATEGORYLIST_MIMG));
                        
objItem.setCLMDESC(objJson.getString(Constant.CATEGORYLIST_MDESC));
                        
objItem.setCLMDATE(objJson.getString(Constant.CATEGORYLIST_MDATE));
                        
objItem.setCLMVIEW(objJson.getString(Constant.CATEGORYLIST_MVIEW));
                        
objItem.setCLMRATE(objJson.getString(Constant.CATEGORYLIST_MRATE));

                        
arrayOfHome.add(objItem);

                        
JSONArray jsonArraychild objJson.getJSONArray(Constant.RELATED_ITEM_ARRAY_NAME);
                        if(
jsonArraychild.length()==0)
                        {

                        }
                        else
                        {
                            for(
int j=;jjsonArraychild.length();j++)
                            {
                                
JSONObject objChild jsonArraychild.getJSONObject(j);
                                
ItemRelated item=new ItemRelated();
                                
item.setRelatedId(objChild.getString(Constant.RELATED_ITEM_MID));
                                
item.setRelatedTitle(objChild.getString(Constant.RELATED_ITEM_MNAME));
                                
item.setRelatedImage(objChild.getString(Constant.RELATED_ITEM_MTHUMB));
                                
arrayofRelated.add(item);
                            }
                        }

                    }

                } catch (
JSONException e) {
                    
e.printStackTrace();
                }

                
setAdapterToListview();
            }

        }
    }

    public 
void setAdapterToListview() {

        
objAllBean=arrayOfHome.get(0);
        
mid=objAllBean.getCLID();
        
mcid=objAllBean.getCLCID();
        
mgid=objAllBean.getCLGID();
        
mtitle=objAllBean.getCLTITLE();
        
mcast=objAllBean.getCLMCAST();
        
mimg=objAllBean.getCLMIMG();
        
mdesc=objAllBean.getCLMDESC();
        
mdate=objAllBean.getCLMDATE();
        
mview=objAllBean.getCLMVIEW();
        
mrate=objAllBean.getCLMRATE();

        
txt_mname.setText(mtitle);
        
txt_mdate.setText(mdate);
        
txt_mcast.setText(mcast);
        
txt_mview.setText(mview);

        
imageLoader.DisplayImage(Constant.SERVER_IMAGE_UPFOLDER_THUMB+mimg,img_moview);

        
webmdetail.setBackgroundColor(Color.parseColor("#ffffff"));
        
webmdetail.getSettings().setBuiltInZoomControls(true);
        
webmdetail.getSettings().setJavaScriptEnabled(true);
        
webmdetail.getSettings().setDefaultTextEncodingName("UTF-8");
        
String mimeType "text/html";
        
String encoding "utf-8";
        
String htmlText mdesc;

        
String text "<html><head>"
                
"<style type=\"text/css\">body{color: #000000;}"
                
"</style></head>"
                
"<body>"                          
                
+  htmlText
                
"</body></html>";

        
webmdetail.loadData(textmimeTypeencoding);

        if(
arrayofRelated.size()==0)
        {
            
linearContent.removeAllViews();
            
TextView txt=new TextView(MovieDetailsActivity.this);
            
txt.setText("موزیک مشابه یافت نشد");
            
txt.setTextColor(getResources().getColor(R.color.black));
            
txt.setTextSize(16f);
            
linearContent.addView(txt);
        }
        else
        {
            
RelatedContent();    
        }

    }
    public 
void RelatedContent()
    {
        
linearContent.removeAllViews();
        
int i=0;
        do
        {
            if(
i>=arrayofRelated.size())
            {
                return;
            }

            
View view getLayoutInflater().inflate(R.layout.related_contentnull);
            final 
ImageView imageView = (ImageView)view.findViewById(R.id.img_rela);
            final 
TextView txt_relmname=(TextView)view.findViewById(R.id.text_relmname);
            
imageView.setId(i);

            
linearContent.addView(view);
            
objChildBean=arrayofRelated.get(i);
            
imageLoader.DisplayImage(Constant.SERVER_IMAGE_THUMB+objChildBean.getRelatedImage().toString(), imageView);
            
txt_relmname.setText(objChildBean.getRelatedTitle().toString());

            
imageView.setOnClickListener(new View.OnClickListener() {

                @
Override
                
public void onClick(View v) {
                    
// TODO Auto-generated method stub
                    
objChildBean=arrayofRelated.get(imageView.getId());
                    
Intent intdetials=new Intent(MovieDetailsActivity.this,MovieDetailsActivity.class);
                    
intdetials.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    
Constant.CATEGORYLIST_IDD=objChildBean.getRelatedId();
                    
//Constant.SINGLE_CHANNEL=objChildBean.getRelatedTitle();
                    
startActivity(intdetials);
                    
finish();
                }
            });
            
i++;
        }while(
true);
    }

    public 
void showToast(String msg) {
        
Toast.makeText(MovieDetailsActivity.thismsgToast.LENGTH_LONG).show();

    }
    @
Override
    
public boolean onCreateOptionsMenu(Menu menu) {
        
MenuInflater inflater getMenuInflater();
        
inflater.inflate(R.menu.detail_menumenu);

        return 
super.onCreateOptionsMenu(menu);
    }

    @
Override
    
public boolean onOptionsItemSelected(MenuItem menuItem)
    {       
        switch (
menuItem.getItemId()) 
        {
        case 
android.R.id.home
            
onBackPressed();
            return 
true;

        case 
R.id.rating:

            final 
Dialog dialog = new Dialog(MovieDetailsActivity.this);
            
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
            
dialog.setContentView(R.layout.ratedialog);
            
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

            final 
TextView txtrate=(TextView)dialog.findViewById(R.id.textView1);
            
Button btnrate=(Button)dialog.findViewById(R.id.button1);
            
RatingBar rating=(RatingBar)dialog.findViewById(R.id.ratingBar1);

            
rating.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {

                @
Override
                
public void onRatingChanged(RatingBar ratingBarfloat rating,
                        
boolean fromUser) {
                    
// TODO Auto-generated method stub
                    
txtrate.setText(String.valueOf(rating));
                }
            });


            
btnrate.setOnClickListener(new View.OnClickListener() {

                @
Override
                
public void onClick(View v) {
                    
// TODO Auto-generated method stub


                    
if(txtrate.getText().toString().equalsIgnoreCase(""))
                    {
                        
showToast("حداقل یک ستاره انتخاب کنید");
                    }
                    else
                    {
                        
dialog.dismiss();

                        if (
JsonUtils.isNetworkAvailable(MovieDetailsActivity.this)) {
                            new 
MyTaskRating().execute(Constant.RATING_URL+Constant.DEVICE_ID+"&rate="+txtrate.getText().toString()+"&movie_id="+mid);
                            
//Log.e("rate", ""+Constant.RATING_URL+Constant.DEVICE_ID+"&rate="+txtrate.getText().toString()+"&movie_id="+mid);
                        
} else {
                            
showToast("No Network Connection!!!");
                            
alert.showAlertDialog(MovieDetailsActivity.this"Internet Connection Error",
                                    
"Please connect to working Internet connection"false);
                        }
                    }

                }
            });
            
dialog.show();



            return 
true;  

        case 
R.id.coment:
            if(
isLogin())
            {
                
objAllBean=arrayOfHome.get(position);
                
Constant.CATEGORYLIST_IDD=objAllBean.getCLID();
                
Constant.ACTORLIST_TITLEE=objAllBean.getCLTITLE();
                
Log.e("vid"""+Constant.CATEGORYLIST_IDD);
                
Intent intentupload=new Intent(getApplicationContext(),CommentActivity.class);
                
intentupload.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                
startActivity(intentupload);
            }
            else
            {
                
//Toast.makeText(MovieDetailsActivity.this, "If you want add comment then you need to Login First.", Toast.LENGTH_SHORT).show();
                
Intent up_auth=new Intent(getApplicationContext(),AuthonticationActivity.class);
                
up_auth.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                
startActivity(up_auth);    
                
Constant.LOGIN_FORM="Upload";
            }

            return 
true;


        default:
            return 
super.onOptionsItemSelected(menuItem);
        }
    }
    public 
boolean isLogin() {

        
SessionManager sessionManager=new SessionManager(getApplicationContext());
        return 
sessionManager.isLoggedIn();
    }

    private    class 
MyTaskRating extends AsyncTask<StringVoidString> {

        
ProgressDialog pDialog;

        @
Override
        
protected void onPreExecute() {
            
super.onPreExecute();

            
pDialog = new ProgressDialog(MovieDetailsActivity.this);
            
pDialog.setMessage("در حال بارگذاری...");
            
pDialog.setCancelable(false);
            
pDialog.show();
        }

        @
Override
        
protected String doInBackground(String... params) {
            return 
JsonUtils.getJSONString(params[0]);
        }

        @
Override
        
protected void onPostExecute(String result) {
            
super.onPostExecute(result);

            if (
null != pDialog && pDialog.isShowing()) {
                
pDialog.dismiss();
            }

            if (
null == result || result.length() == 0) {
                
showToast("محتوایی یافت نشد");

            } else {

                try {
                    
JSONObject mainJson = new JSONObject(result);
                    
JSONArray jsonArray mainJson.getJSONArray(Constant.CATEGORY_ARRAY_NAME);
                    
JSONObject objJson null;
                    for (
int i 0jsonArray.length(); i++) {
                        
objJson jsonArray.getJSONObject(i);
                        
rate_msg=objJson.getString(Constant.RATE_MSG);
                    }

                } catch (
JSONException e) {
                    
e.printStackTrace();
                }
                
setAdapterToListviewRate();
            }

        }

        public 
void setAdapterToListviewRate() {

            
showToast(rate_msg);

            if(
rate_msg.equals("شما قبلا امتیاز داده اید"))
            {

            }
            else
            {

            }

        }
    }

    private    class 
MyTaskView extends AsyncTask<StringVoidString> {

        
ProgressDialog pDialog;

        @
Override
        
protected void onPreExecute() {
            
super.onPreExecute();

            
pDialog = new ProgressDialog(MovieDetailsActivity.this);
            
pDialog.setMessage("Loading...");
            
pDialog.setCancelable(false);
            
pDialog.show();
        }

        @
Override
        
protected String doInBackground(String... params) {
            return 
JsonUtils.getJSONString(params[0]);
        }

        @
Override
        
protected void onPostExecute(String result) {
            
super.onPostExecute(result);

            if (
null != pDialog && pDialog.isShowing()) {
                
pDialog.dismiss();
            }

            if (
null == result || result.length() == 0) {
                
showToast("No data found from web!!!");

            } else {

                try {
                    
JSONObject mainJson = new JSONObject(result);
                    
JSONArray jsonArray mainJson.getJSONArray(Constant.CATEGORY_ARRAY_NAME);
                    
JSONObject objJson null;
                    for (
int i 0jsonArray.length(); i++) {
                        
objJson jsonArray.getJSONObject(i);
                        
rate_msg=objJson.getString(Constant.RATE_MSG);
                    }

                } catch (
JSONException e) {
                    
e.printStackTrace();
                }
                
setAdapterToListviewRate();
            }

        }

        public 
void setAdapterToListviewRate() {

            
//showToast(rate_msg);

            
if(rate_msg.equals("You Have Already Views"))
            {

            }
            else
            {


            }

        }
    }

ممنون میشم خودتون بازبینی کنید ببینید کجای کار ایراد داره و مطمئنم یک مشکل جزئی بیش نیست که من رو دو یه هفته است سردر گم کرده است

 
پاسخ


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)