我想从上下文中获取视图或 findViewById()?还是出于意图?
我试图在我的广播接收器中到达特定视图,onReceive 的参数是上下文和意图。
好吧,我有一堂课,里面是我的广播接收器。现在,我正在尝试将广播接收器与其分离,但我需要一种方法,以便我仍然可以与分离的广播接收器类中的类视图进行通信。
谢谢。
我想从上下文中获取视图或 findViewById()?还是出于意图?
我试图在我的广播接收器中到达特定视图,onReceive 的参数是上下文和意图。
好吧,我有一堂课,里面是我的广播接收器。现在,我正在尝试将广播接收器与其分离,但我需要一种方法,以便我仍然可以与分离的广播接收器类中的类视图进行通信。
谢谢。
For example you can find any textView:
TextView textView = (TextView) ((Activity) context).findViewById(R.id.textView1);
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);
在您的广播接收器中,您可以通过膨胀来自 XML 资源的根布局来访问视图,然后使用 findViewByid() 从该根布局中找到您的所有视图:
View view = View.inflate(context, R.layout.ROOT_LAYOUT, null);
现在您可以通过“视图”访问您的视图并将它们转换为您的视图类型:
myImage = (ImageView) view.findViewById(R.id.my_image);
首先使用这个:
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));
然后您可以使用它来查找布局中的任何元素。
ImageView myImage = (ImageView) layout.findViewById(R.id.my_image);
你为什么不只使用单例?
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;
}
}
然后在活动类中:
private ClassicSingleton cs = ClassicSingleton.getInstance();
在非活动类中:
ClassicSingleton cs= ClassicSingleton.getInstance();
Context c=cs.getContext();
ImageView imageView = (ImageView) ((Activity)c).findViewById(R.id.imageView1);