[英]How to pass parameters to a class extending view in android from activity class
[英]pass parameters to custom view android
我正在嘗試將日歷添加到我的應用程序。 我為此使用了一個自定義視圖,我想將事件從數據庫添加到日歷中。 我需要將一個字符串傳遞給自定義視圖,以便它知道從哪里檢索數據。 我沒有找到怎么做。
package com.example.homerunner;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
public class CoachCalendarActivity extends AppCompatActivity {
CustomCalendarView customCalendarView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_coach_calendar);
Intent intent = getIntent();
String uid = intent.getStringExtra("uid");
Log.d("Loge", "onCreate: " + uid);
customCalendarView = (CustomCalendarView)findViewById(R.id.custom_calender_view);
}
}
我要傳遞的字符串保存在String uid = intent.getStringExtra("uid");
自定義查看代碼
public class CustomCalendarView extends LinearLayout implements View.OnClickListener, AdapterView.OnItemClickListener, EventRecyclerAdapter.OnEventListener {
Context context;
public CustomCalendarView(Context context) {
super(context);
}
public CustomCalendarView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
this.context = context;
}
public CustomCalendarView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
}
您可以做的最簡單的事情之一是在您的自定義視圖 class 中添加一個 setter 方法,然后使用此 setter 將您想要的值傳遞給自定義視圖。
例如,您可以執行以下操作:
public class CustomCalendarView extends LinearLayout implements View.OnClickListener, AdapterView.OnItemClickListener, EventRecyclerAdapter.OnEventListener {
Context context;
//note the new filed added!
private String uid;
public CustomCalendarView(Context context) {
super(context);
}
public CustomCalendarView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
this.context = context;
}
public CustomCalendarView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
//note the new setter added!
public void setUid(String uid){
this.uid = uid;
}
}
然后,從活動中,您可以簡單地執行以下操作:
package com.example.homerunner;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
public class CoachCalendarActivity extends AppCompatActivity {
CustomCalendarView customCalendarView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_coach_calendar);
Intent intent = getIntent();
String uid = intent.getStringExtra("uid");
Log.d("Loge", "onCreate: " + uid);
customCalendarView = (CustomCalendarView)findViewById(R.id.custom_calender_view);
//note the setter usage!
customCalendarView.setUid(uid);
}
}
現在自定義視圖具有您需要發送它的 uid。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.