Android - Как получить представление из контекста?
Я хочу получить представление или findViewById() из контекста?
Или от намерения?
Я пытаюсь получить конкретное представление в своем широковещательном приемнике, а параметр onReceive - это контекст и намерение.
Ну, у меня есть класс, и внутри него мой радиоприемник. Теперь я пытаюсь отделить широковещательный приемник от него, но мне нужен способ, чтобы я мог общаться с представлениями моего класса из моего выделенного класса вещательного приемника.
Спасибо.
Ответы
Ответ 1
Начиная с контекста, корневой вид связанного действия может выполняться
View rootView = ((Activity)_context).Window.DecorView.FindViewById(Android.Resource.Id.Content);
В Raw Android он выглядит примерно так:
View rootView = ((Activity)mContext).getWindow().getDecorView().findViewById(android.R.id.content)
Затем просто вызовите findViewById на этом
View v = rootView.findViewById(R.id.your_view_id);
Ответ 2
Например, вы можете найти любой текст:
TextView textView = (TextView) ((Activity) context).findViewById(R.id.textView1);
Ответ 3
В вашем широковещательном приемнике вы можете получить доступ к представлению через инфляцию корневого макета из XML-ресурса, а затем найти все свои представления из этого корневого макета с помощью findViewByid():
View view = View.inflate(context, R.layout.ROOT_LAYOUT, null);
Теперь вы можете получить доступ к своим представлениям через "вид" и применить их к виду вида:
myImage = (ImageView) view.findViewById(R.id.my_image);
Ответ 4
сначала используйте это:
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);
Ответ 5
Почему бы вам просто не использовать синглтон?
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();
И в классе non activity:
ClassicSingleton cs= ClassicSingleton.getInstance();
Context c=cs.getContext();
ImageView imageView = (ImageView) ((Activity)c).findViewById(R.id.imageView1);