سؤال

لدي عرض مخصص نصف الشاشة وعرض النص في نشاطي.

<com.sted.test.mainView
    android:id="@+id/mainView" android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

<TextView android:id="@+id/tvScore" android:layout_height="wrap_content" android:layout_width="wrap_content"
    android:layout_alignParentLeft="true" android:layout_alignParentBottom="true" />

عند النقر على عرض مخصص, كيف يمكنني تحديث تكستفيو في نشاطي?

حاليا لدي هذه القطعة من الترميز في وجهة نظري المخصصة onTouchEvent() لكنه يضرب نولبونتيركسيبتيون في setText() جزء.يجب أن لا تحديث تكستفيو في وجهة نظري مخصص?

TextView tvScore = (TextView) findViewById(R.id.tvScore);
tvScore.setText("Updated!");
هل كانت مفيدة؟

المحلول

لا يمكنك "رؤية" تكستفيو تفسكور في رمز العرض المخصص الخاص بك. findViewById() يبحث عن طرق العرض في التسلسل الهرمي بدءا من طريقة العرض التي تتصل بها ، أو من جذر التسلسل الهرمي إذا كنت تتصل Activity.findViewById() (وبالطبع هذا يعمل فقط بعد setContentView()).

إذا كانت طريقة العرض المخصصة الخاصة بك عبارة عن عرض مركب مثل قول مخطط خطي يحتوي على بعض وجهات النظر النصية، فسيكون من المنطقي استخدام findViewById() هناك.

الحل هو العثور على تكستفيو على سبيل المثال في onCreate() ومن ثم تمريرها إلى عرض مخصص في بعض الطريق (مثل بعض set..() الطريقة).

تحرير

إذا كان لديك في عرضك المخصص شيء مثل:

public class CustomView extends View {
    ...
    TextView tvToUpdate;
    public void setTvToUpdate(TextView tv) {
        tvToUpdate = tv;
    }
    ...
}

يمكنك أن تفعل شيئا مثل:

protected void onCreate(Bundle bundle) {
    ...
    CustomView cv = (CustomView) findViewById(R.id.customview);
    TextView tv = (TextView) findViewById(R.id.tv);
    cv.setTvToUpdate(tv);
    ...
}

بحيث أنه منذ ذلك الحين سيكون لديك إشارة إلى تكستفيو داخل رمز عرض مخصص الخاص بك.سيكون مثل نوع من الإعداد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top