প্রিয় সামগ্রীতে ওয়েবভিউতে সঠিকভাবে প্রদর্শিত হয় না


91

আমি একটি ভাষার অভিধান অ্যাপ্লিকেশন বিকাশ করছি। আমি পছন্দের শব্দটিকে পছন্দ হিসাবে সংরক্ষণ করি। এক্সএমএল ফাইলে প্রিয় সামগ্রীটি নীচের মত দেখাচ্ছে:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
  <map>
    <string name="history">
      dict_name::160170::hi,dict_name::157140::he-man,dict_name::184774::jet,dict_name::34527::black
    </string>
    <string name="waitingTime">
      0
    </string>
    <boolean name="saveFavourite" value="true" />
    <string name="defaultDictionary">
      dict_name
    </string>
    <string name="favourite">
      dict_name::149271::go,dict_name::25481::back,dict_name::184774::jet
    </string>
    <boolean name="saveHistory" value="true" />
  </map>

ওয়েব ভিউতে প্রিয় সামগ্রী লোড করতে আমি নিম্নলিখিত কোডটি ব্যবহার করি:

public class User extends Activity {
    private static final String FAVOURITE_TAG = "[MyDict - FavouriteView] ";
    private static final String CONTENT_TAG = null;

    private ListView mLSTFavourite = null;
    private ArrayList<String> lstDict = null;
    private ArrayList<Integer> lstId = null;
    private ArrayList<String> mWordFavourite = null;
    private ArrayAdapter<String> aptList = null;
    private SharedPreferences prefs;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.favourite);
        prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

        if (prefs.getBoolean("saveFavourite", true)) {
            String strFavourite = prefs.getString("favourite", "");
            Log.i(FAVOURITE_TAG, "Favourite loaded");
            if (strFavourite != null && !strFavourite.equals("")) {
                mWordFavourite = new ArrayList<String>(Arrays.asList(strFavourite.split(",")));
            } else {
                mWordFavourite = new ArrayList<String>();
            }
        } else {
            mWordFavourite = new ArrayList<String>();
        }

        Log.d(FAVOURITE_TAG, "mWordFavourite = " + mWordFavourite.size());
        mLSTFavourite = (ListView) findViewById(R.id.lstFavourite);

        ImageButton btnClear = (ImageButton) findViewById(R.id.btnClear);
        ImageButton btnBackToContent = (ImageButton) findViewById(R.id.btnBackToContent);

        if (lstDict == null) {
            lstDict = new ArrayList<String>();
            lstId = new ArrayList<Integer>();
            aptList = new ArrayAdapter<String>(getApplicationContext(), R.layout.customlist);
        }
        lstDict.clear();
        lstId.clear();
        aptList.clear();

        if (mWordFavourite != null && mWordFavourite.size() > 0) {
            try {
                for (int i = 0; i < mWordFavourite.size(); i++) {
                    Log.i(FAVOURITE_TAG, "item = " + mWordFavourite.get(i));
                    String arrPart[] = mWordFavourite.get(i).split("::");
                    if (arrPart.length == 3) {
                        Log.i(CONTENT_TAG, "loaded content " + arrPart.length + ", wordId = " + arrPart[1]);
                        // Log.i(CONTENT_TAG, "loaded 0");
                        lstDict.add(i, arrPart[0]);
                        // Log.i(CONTENT_TAG, "loaded 1");
                        lstId.add(i, Integer.parseInt(arrPart[1]));
                        // Log.i(CONTENT_TAG, "loaded 2");
                        aptList.add(arrPart[2]);
                    } else {
                        Log.i(FAVOURITE_TAG, "Wrong entry: " + mWordFavourite.get(i));
                    }
                }
            } catch (Exception ex) {
                Log.i(FAVOURITE_TAG, "Wrong entry found!");
            }
        }
        // Log.i(CONTENT_TAG,"Adapter size = " + aptList.getCount());
        // assign result return
        mLSTFavourite.setAdapter(aptList);
        mLSTFavourite.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    public void onItemClick(AdapterView<?> arg0, View v, int arg2, long arg3) {
                        // mEDWord.setText(mAdapter.getItem(arg2));
                        Intent i = new Intent();
                        i.putExtra("dict", lstDict.get(arg2));
                        i.putExtra("wordId", lstId.get(arg2));
                        setResult(RESULT_OK, i);
                        finish();
                    }
                });
        btnClear.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                mWordFavourite.clear();
                aptList.clear();
                mLSTFavourite.setAdapter(aptList);
                SharedPreferences.Editor editor = prefs.edit();
                editor.putString("favourite", "");
                editor.commit();
                setResult(RESULT_OK);
                finish();
            }
        });

        btnBackToContent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setResult(RESULT_CANCELED);
                finish();
            }
        });
    }
}

প্রিয় সামগ্রীটি সফলভাবে লোড হয়েছে। প্রিয় শব্দগুলি ওয়েবভিউতে তালিকাবদ্ধ রয়েছে। তবে সমস্যাটি হ'ল এটি কোনও পছন্দের সাথে যুক্ত হওয়া সর্বশেষতম শব্দের সংজ্ঞাটি কেবলমাত্র শব্দটি চয়ন করা ছাড়াই দেখায়। উদাহরণ স্বরূপ:

word1
word2
word3

শব্দ 1 এবং / অথবা শব্দ 2 অর্থের জন্য নির্বাচিত হওয়া সত্ত্বেও, সর্বশেষ শব্দের সংজ্ঞা, যা শব্দ 3, সর্বদা প্রদর্শিত হয়। আমার উদ্দেশ্য সংজ্ঞা প্রদর্শন হয় word1যখন word1নির্বাচন করা হয়, এবং সংজ্ঞা word2যখন word2নির্বাচন করা হয়, এবং তাই এবং তাই ঘোষণা। আমি এসকিউএলাইট ডাটাবেসে আমার অভিধানের ডেটা সংরক্ষণ করি।

এখানকার কেউ এই সমস্যা সমাধানে সহায়তা করতে পারে?


18
আমি আপনার প্রশ্নে কোডটি চেষ্টা করেছি এবং যতদূর যায় এটি আপনার নমুনা তথ্য থেকে সঠিক অভিধানের নাম এবং শব্দের আইডি ফিরিয়ে আনবে যখন তাদের মধ্যে একটি তালিকা তালিকাতে নির্বাচিত হবে। আপনি একটি ওয়েবভিউ এবং একটি ডাটাবেস উল্লেখ করেছেন, যা সম্ভবত নির্বাচিত শব্দের জন্য ডেটা প্রাপ্ত এবং প্রদর্শন করে, এর কিছু বিবরণ সরবরাহ করা গেলে আরও সহায়তা দেওয়া যেতে পারে।
স্টিভিবি

6
আপনি এখানে অ্যান্ড্রয়েডের কোন সংস্করণ ব্যবহার করছেন? ২.৩ এর শেয়ার প্রিফেসগুলির সাথে সমস্যা আছে, আমি সেগুলি নিজেই চালিয়েছি এবং এটি পরিচিত প্রভাব হিসাবে মনে হচ্ছে।
নীহারিকা

4
শিরোনামে আপনি ওয়েব ভিউ উল্লেখ করেছেন, আপনার কোডে ওয়েবভিউ কোথায় আছে ???
পয়েন্টার নুল

4
ঠিক যেমন @ স্টেভিবি ইতিমধ্যে উল্লেখ করেছে; ওয়েবভিউ সম্পর্কিত কোড না দেখে আরও সুনির্দিষ্ট সহায়তা দেওয়া কিছুটা শক্ত। স্বতঃস্ফূর্তভাবে আমি নির্দিষ্ট পরিস্থিতিতে ওয়েবভিউ ক্যাশে করা ডেটা সম্পর্কে ভাবতে পারি। তবে আবার: আমাকে আরও দেখতে হবে যে আপনি কীভাবে ওয়েবভিউ অংশটি বাস্তবায়ন করেছেন আরও বিশদ সহায়তা দিতে সক্ষম হবেন।
dbm

4
কী উজ্জীবিত প্রশ্ন! সত্যের 8 মাস পরেও পুনরুত্থিত হয়েছে, এখনও প্রাসঙ্গিক কোড ছাড়াই পোস্ট করা হয়েছে, এবং কোনওভাবে + a৪ দিয়ে? এটি ভালভাবে গবেষণা করা হয় না, বা এটি এই মন্তব্যটির চেয়ে বেশি কার্যকর নয়।
dokkaebi

উত্তর:


3

আমি মনে করি সমস্যাটি এই লাইন থেকে এসেছে

            mWordFavourite = new ArrayList<String>(Arrays.asList(strFavourite.split(",")));

আপনি যেখানে <string>প্রতিবার একটি নতুন অ্যারেলিস্ট অবজেক্ট তৈরি করেন তবে আপনার এতে যুক্ত হওয়া উচিত? & শেষটি পান অন্যথায় আপনার এটি একটি পরিবর্তনশীলতে রাখা উচিত put

যদি আপনি এটির আকার ()> 0 যাচাই করে নিচ্ছেন

তবে প্রতিবার আপনি কোনও নতুন অবজেক্ট তৈরি করেন এটি এতে যুক্ত হয় না

হয়তো আমি ভুল!


2

http://developer.android.com/references/android/webkit/WebView.html

আরও ইনফমোশনগুলির জন্য দয়া করে উপরের লিঙ্কটি দেখুন


স্ট্যাকওভারফ্লোতে আপনাকে স্বাগতম! আপনি কি নিজের উত্তরের নিবন্ধটির একটি অংশ যোগ করতে চান, যাতে এটি নিজেরাই দাঁড়াতে পারে?
এসএল বার্থ - মনিকা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.