2013-03-28 2 views
2

Я кодирую приложение для Android. Как передать массив int из моей активности в класс вида? Я искал, но не нашел ничего похожего на мой вопрос. У меня есть этот класс:Передача массива от Activity to View Android

общественный класс ConvertToGrid расширяет активность {...}

, который принимает данные пользователя от расположения основного вида деятельности (используя намерение) и преобразует его в целочисленный массив: int[] binary = {...}, который имеет 64 значения. Как я могу получить его в этом:

общественного класса DrawGrid распространяется View {...}

я наивно пытался умысел, но если я не делал это так, что казалось, что неправильно, что нужно сделайте для просмотра! Кроме того, в качестве сторонника я предполагаю, что мне не нужно объявлять мой вид в манифесте, как я делаю свою деятельность?

ответ

0

Создайте конструктор, который он имеет обычные параметры плюс целочисленный массив, например:

public class DrawGrid extends View { 

    private int[] intArray; 

    public DrawGrid(Context context,int[] intArray) { 
     super(context); 
     // TODO Auto-generated constructor stub 
      this.intArray = intArray; 
    } 

    public DrawGrid(Context context, AttributeSet attrs, int defStyle,int[] intArray) { 
     super(context, attrs, defStyle); 
     // TODO Auto-generated constructor stub 
      this.intArray = intArray; 
    } 

    public DrawGrid(Context context, AttributeSet attrs,int[] intArray) { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 
      this.intArray = intArray; 
    } 


} 
+0

Мне кажется, это отличная идея. Я понимаю, насколько основным был мой вопрос. – David

+0

Быстрое наблюдение, как я могу использовать массив, в котором я прошел? Я пытаюсь обратиться к нему позже в моем коде, но он жалуется, что он не знает, что такое intArray. – David

+0

@David См. Мой ответ снова. Этого достаточно, чтобы создать поле в вашем классе и установить его в конструкторах. – hasanghaforian

1

Попробуйте

public class ConvertToGrid extends Activity{. 

Public int[] binary = {...} 

public class DrawGrid extends View{...} 

..} 
+0

Возможно, лучше инкапсулировать данные в представлении (если они используют данные), чем активность. Таким образом, вы можете легко использовать его для разных действий. – runor49

+0

Спасибо, ректор, это хороший момент. – David

0
public class DrawGrid extends View{ 
int[] binary; 

public void setBinaryData(int[] binary) 
{ 
    this.binary = binary 
} 

} 
+0

Означает ли это, что сделать массив int доступным для всех классов в моем проекте? Опять же, еще один очень простой вариант. – David

0

Просто создать конструктор, который есть пары ИНТ []

public DrawGrid(int[] binaries) 
{ 
    // constructor 
} 
Смежные вопросы