বান্ডেল ব্যবহার করে ফ্র্যাগমেন্ট থেকে ডায়ালগ্রেফ্যাগমেন্ট থেকে অঙ্কনযোগ্য পাস

আমি একটি দ্রষ্টব্য (mDLlist.get (অবস্থান) .getImageId ()) একটি ফ্রেগমেন্ট থেকে একটি ডায়ালগ ফ্র্যাগমেন্টে পাস করতে হবে।

আমি কিভাবে এটি করতে একটি উপায় খুঁজে পেতে পারে না, কোন ইনপুট মহান হতে হবে।

আপনাকে ধন্যবাদ।

...
FragmentManager ft = ((FragmentActivity)context1).getSupportFragmentManager();
DialogFragment newFragment = MyNotification.newInstance();

Bundle args = new Bundle();
// How to pass this value ?
args.put?("appdraw", mDLlist.get(position).getImageId());
//--//
args.putString("appname", (String)mDLlist.get(position).getLabelnameText());
args.putString("appversion", mDLlist.get(position).getVersionName());
args.putString("appinstalltime", "Downloaded");
newFragment.setArguments(args);

newFragment.show(ft, "mydialog");
...
0
অঙ্কনযোগ্য। পাবলিক Drawable getImageId() {ফিরে ছবি আইডি; } পাবলিক অকার্যকর setImageId (অঙ্কনযোগ্য চিত্র আইডি) {this.imageId = imageId; }
যোগ লেখক Simon, উৎস
অঙ্কনযোগ্য। পাবলিক Drawable getImageId() {ফিরে ছবি আইডি; } পাবলিক অকার্যকর setImageId (অঙ্কনযোগ্য চিত্র আইডি) {this.imageId = imageId; }
যোগ লেখক Simon, উৎস
getImageId ()) কী করে?
যোগ লেখক rafsanahmad007, উৎস
হয়তো এটি সাহায্য করবে:
যোগ লেখক rafsanahmad007, উৎস
হয়তো এটি সাহায্য করবে:
যোগ লেখক rafsanahmad007, উৎস

6 উত্তর

Serializable প্রয়োগ না করে আপনি একটি অঙ্কনযোগ্য পাস করতে পারবেন না এবং আমি মনে করি না যে আপনি পার্সেসযোগ্য প্রয়োগ করতে পারেন।

যদি এটি একটি ড্রয়েবল ইতিমধ্যে আপনার প্যাকেজে থাকে তবে আপনি কেবল স্ট্রিং বা রিসোর্স আইডিটি পাস করতে পারেন যাতে আপনি এটি আবার দেখতে পারেন।

এটির বিটম্যাপটি আপনাকে স্থানীয় সঞ্চয়স্থানে লিখতে এবং পথটি পাস করতে হবে।

2
যোগ
হাই কোডি, উত্তর জন্য thx, আরো স্পষ্ট হতে। এটি একটি টেকসই আইকন যা আমি অভ্যন্তরীণ সঞ্চয়স্থানে একটি .apk ফাইল থেকে দখল করি। (Apk ইনস্টল করা হয়, শুধু ডাউনলোড)। আমি এই "mydlModel.setImageId মত এটি পাস (info.applicationInfo.loadIcon (pm));"
যোগ লেখক Simon, উৎস

Serializable প্রয়োগ না করে আপনি একটি অঙ্কনযোগ্য পাস করতে পারবেন না এবং আমি মনে করি না যে আপনি পার্সেসযোগ্য প্রয়োগ করতে পারেন।

যদি এটি একটি ড্রয়েবল ইতিমধ্যে আপনার প্যাকেজে থাকে তবে আপনি কেবল স্ট্রিং বা রিসোর্স আইডিটি পাস করতে পারেন যাতে আপনি এটি আবার দেখতে পারেন।

এটির বিটম্যাপটি আপনাকে স্থানীয় সঞ্চয়স্থানে লিখতে এবং পথটি পাস করতে হবে।

2
যোগ
হাই কোডি, উত্তর জন্য thx, আরো স্পষ্ট হতে। এটি একটি টেকসই আইকন যা আমি অভ্যন্তরীণ সঞ্চয়স্থানে একটি .apk ফাইল থেকে দখল করি। (Apk ইনস্টল করা হয়, শুধু ডাউনলোড)। আমি এই "mydlModel.setImageId মত এটি পাস (info.applicationInfo.loadIcon (pm));"
যোগ লেখক Simon, উৎস

Drawables আইডি টাইপ Integer তাই ব্যবহার করুন

putInt("image",R.drawable.sample)

এবং মত পেতে

getInt("image")
1
যোগ
হাই খেমু, দুর্ভাগ্যক্রমে আমি যদি putInt ব্যবহার করে বলি এটি পাস করতে পারে না টাইপ আঁকা এবং int না।
যোগ লেখক Simon, উৎস
R.drawable একটি আইডি যা ইন্টিগ্রার হয়।
যোগ লেখক Khemraj, উৎস

Drawables আইডি টাইপ Integer তাই ব্যবহার করুন

putInt("image",R.drawable.sample)

এবং মত পেতে

getInt("image")
1
যোগ
হাই খেমু, দুর্ভাগ্যক্রমে আমি যদি putInt ব্যবহার করে বলি এটি পাস করতে পারে না টাইপ আঁকা এবং int না।
যোগ লেখক Simon, উৎস
R.drawable একটি আইডি যা ইন্টিগ্রার হয়।
যোগ লেখক Khemraj, উৎস

যে কেউ একই সমস্যা আছে, আমি অ্যাডাপ্টারের অবস্থান পাস করে একটি "workaround" ব্যবহার:

args.putInt("appdrawpos", position);

এবং এটি একটি পাল্টা (i) এর সাথে তুলনা করে যা আমি একটি পদ্ধতিতে ব্যবহার করেছি যা আমি লিখেছি:

int appDrawPos = 0;
Drawable drawIcon;
int i = 0;
...
//Get the adapter position
appDrawPos = getArguments().getInt("appdrawpos");
//Get apk icon
getAPKicon(folder.getAbsolutePath());
...
public void getAPKicon(String directoryName) {
        File directory = new File(directoryName);
        final PackageManager pm = getActivity().getPackageManager();
        File[] fList = directory.listFiles();

        for (File file : fList) {
            if (file.isFile()) {
                //If counter is the same as adapter position
                //Grab the icon from the apk
                if (i == appDrawPos) 
                    if (file.getName().endsWith(".apk")) {
                        PackageInfo info = pm.getPackageArchiveInfo(file.getAbsolutePath(), 0);
                        info.applicationInfo.sourceDir = file.getAbsolutePath();
                        info.applicationInfo.publicSourceDir = file.getAbsolutePath();
                        drawIcon = (info.applicationInfo.loadIcon(pm));
                        appDrawPos = 0;
                        i = 0;
                    }
                    i++;
            } else if (file.isDirectory()) {
                getAPKicon(file.getAbsolutePath());
            }
        }
    }
0
যোগ

যে কেউ একই সমস্যা আছে, আমি অ্যাডাপ্টারের অবস্থান পাস করে একটি "workaround" ব্যবহার:

args.putInt("appdrawpos", position);

এবং এটি একটি পাল্টা (i) এর সাথে তুলনা করে যা আমি একটি পদ্ধতিতে ব্যবহার করেছি যা আমি লিখেছি:

int appDrawPos = 0;
Drawable drawIcon;
int i = 0;
...
//Get the adapter position
appDrawPos = getArguments().getInt("appdrawpos");
//Get apk icon
getAPKicon(folder.getAbsolutePath());
...
public void getAPKicon(String directoryName) {
        File directory = new File(directoryName);
        final PackageManager pm = getActivity().getPackageManager();
        File[] fList = directory.listFiles();

        for (File file : fList) {
            if (file.isFile()) {
                //If counter is the same as adapter position
                //Grab the icon from the apk
                if (i == appDrawPos) 
                    if (file.getName().endsWith(".apk")) {
                        PackageInfo info = pm.getPackageArchiveInfo(file.getAbsolutePath(), 0);
                        info.applicationInfo.sourceDir = file.getAbsolutePath();
                        info.applicationInfo.publicSourceDir = file.getAbsolutePath();
                        drawIcon = (info.applicationInfo.loadIcon(pm));
                        appDrawPos = 0;
                        i = 0;
                    }
                    i++;
            } else if (file.isDirectory()) {
                getAPKicon(file.getAbsolutePath());
            }
        }
    }
0
যোগ