android - How to get view from context?

后端 未结 5 819
走了就别回头了
走了就别回头了 2020-12-01 04:26

I want to get the view or findViewById() from Context? Or from intent?

I\'m trying to reach a specific view in my broadcast receiver and the parameter of onReceive a

相关标签:
5条回答
  • 2020-12-01 04:35

    Why don't you just use a singleton?

    import android.content.Context;
    
    
    public class ClassicSingleton {
        private Context c=null;
        private static ClassicSingleton instance = null;
        protected ClassicSingleton()
        {
           // Exists only to defeat instantiation.
        }
        public void setContext(Context ctx)
        {
        c=ctx;
        }
        public Context getContext()
        {
           return c;
        }
        public static ClassicSingleton getInstance()
        {
            if(instance == null) {
                instance = new ClassicSingleton();
            }
            return instance;
        }
    }
    

    Then in the activity class:

     private ClassicSingleton cs = ClassicSingleton.getInstance();
    

    And in the non activity class:

    ClassicSingleton cs= ClassicSingleton.getInstance();
            Context c=cs.getContext();
            ImageView imageView = (ImageView) ((Activity)c).findViewById(R.id.imageView1);
    
    0 讨论(0)
  • 2020-12-01 04:51

    Starting with a context, the root view of the associated activity can be had by

    View rootView = ((Activity)_context).Window.DecorView.FindViewById(Android.Resource.Id.Content);
    

    In Raw Android it'd look something like:

    View rootView = ((Activity)mContext).getWindow().getDecorView().findViewById(android.R.id.content)
    

    Then simply call the findViewById on this

    View v = rootView.findViewById(R.id.your_view_id);
    
    0 讨论(0)
  • 2020-12-01 04:53

    For example you can find any textView:

    TextView textView = (TextView) ((Activity) context).findViewById(R.id.textView1);
    
    0 讨论(0)
  • 2020-12-01 04:57

    In your broadcast receiver you could access a view via inflation a root layout from XML resource and then find all your views from this root layout with findViewByid():

    View view = View.inflate(context, R.layout.ROOT_LAYOUT, null);
    

    Now you can access your views via 'view' and cast them to your view type:

    myImage = (ImageView) view.findViewById(R.id.my_image);
    
    0 讨论(0)
  • 2020-12-01 04:58

    first use this:

    LayoutInflater inflater = (LayoutInflater) Read_file.this
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    
    Read file is current activity in which you want your context.
    
    View layout = inflater.inflate(R.layout.your_layout_name,(ViewGroup)findViewById(R.id.layout_name_id));
    

    then you can use this to find any element in layout.

    ImageView myImage = (ImageView) layout.findViewById(R.id.my_image);
    
    0 讨论(0)
提交回复
热议问题