2013-12-12 3 views
1

У меня есть виджет вид, как показано ниже:
public class RemoteNumView extends FrameLayout {
, как называю я использую Roboguice так же, как в RoboActivity? Как показано ниже:roboguice впрыснуть в клиенте

@InjectView(R.id.btn_remote_control_num_0) 
private TextView mText; 

Полный код:

/** 
* Created by bbcv on 13-12-12. 
*/ 

public class RemoteNumView extends FrameLayout { 
private IService mService; 

@InjectView(R.id.btn_remote_control_num_0) 
private TextView mText; 

public RemoteNumView(Context context) { 
    super(context); 
    /// 
    addView(LayoutInflater.from(context).inflate(R.layout.v_remote_control_fun,null)); 
} 

public RemoteNumView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

public RemoteNumView(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
} 

public void setService(IService service){ 
    mService = service; 
} 
} 

Любой человек может помочь?

ответ

1

Решила его, написав собственный код. Roboguice плохо написана для этой цели.

protected void injectViews() { 
    for (Field field : this.getClass().getDeclaredFields()) { 
     if (field.isAnnotationPresent(InjectView.class)) { 
      if (Modifier.isStatic(field.getModifiers())) { 
       throw new UnsupportedOperationException("Views can't be staticaly assigned."); 
      } else { 
       if (View.class.isAssignableFrom(field.getType())) { 
        try { 
         final InjectView injectView = field.getAnnotation(InjectView.class); 
         ; 
         final int id = injectView.value(); 
         View view = findViewById(id); 
         if ((view == null) && Nullable.notNullable(field)) { 
          throw new NullPointerException(String.format("Can't inject null value into %s.%s when field is not @Nullable", field.getDeclaringClass(), field.getName())); 
         } 
         field.setAccessible(true); 
         field.set(this, view); 
        } catch (IllegalAccessException e) { 
         throw new IllegalStateException(e); 
        } 
       } else { 
        throw new UnsupportedOperationException("Need view type to assign"); 
       } 
      } 
     } 
    } 
+0

И закончил с использованием ButterKnife лучшим решением. –

Смежные вопросы