Dieser hat mich verblüfft.
Ich muss eine Aktivitätsmethode aus einer benutzerdefinierten Layoutklasse heraus aufrufen. Das Problem dabei ist, dass ich nicht weiß, wie ich über das Layout auf die Aktivität zugreifen kann.
Profilansicht
public class ProfileView extends LinearLayout
{
TextView profileTitleTextView;
ImageView profileScreenImageButton;
boolean isEmpty;
ProfileData data;
String name;
public ProfileView(Context context, AttributeSet attrs, String name, final ProfileData profileData)
{
super(context, attrs);
......
......
}
//Heres where things get complicated
public void onClick(View v)
{
//Need to get the parent activity and call its method.
ProfileActivity x = (ProfileActivity) context;
x.activityMethod();
}
}
ProfileActivity
public class ProfileActivityActivity extends Activity
{
//In here I am creating multiple ProfileViews and adding them to the activity dynamically.
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.profile_activity_main);
}
public void addProfilesToThisView()
{
ProfileData tempPd = new tempPd(.....)
Context actvitiyContext = this.getApplicationContext();
//Profile view needs context, null, name and a profileData
ProfileView pv = new ProfileView(actvitiyContext, null, temp, tempPd);
profileLayout.addView(pv);
}
}
Wie Sie oben sehen können, instanziiere ich die profileView programmgesteuert und übergebe damit den activityContext. 2 Fragen:
- Übergebe ich den richtigen Kontext in die Profilansicht?
- Wie erhalte ich die enthaltende Aktivität aus dem Kontext?