2014-01-03 5 views
-2

Я очень новый в разработке приложения в Androidкак перетасовать макеты XML

Как я могу случайно изменить текущую активность Layout, когда я нажимаю на Button? я не знаю, как и где начать кодирование

public class RandomSample extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button random = (Button) findViewById(R.id.button1); 

    random.setOnClickListener(new View.OnClickListener() { 
    int [] layouts = {R.layout.layout1, R.layout.layout2, R.layout.layout3}; 
    Random r = new Random(); 

     @Override 
     public void onClick(View v) { 
      setContentView(r.nextInt(layouts.length)); 
     } 
    }); 
} 
} 

вот что я сделал, но отметив, кажется, работает на всех

+0

@Onur А. я попробовал ваш код, но ничего, кажется, работает – user3149781

+0

вы должны оптимизировать его для себя я просто написал легко настроить фиктивный код –

+0

я вижу. можете ли вы дать мне рекомендации или некоторые указания о том, как правильно создать такой метод? Спасибо. – user3149781

ответ

1

Объявляем массив идентификаторов макетов, а затем изменить его setContentView()

int[] layouts={R.layout.l1, R.layout.l2, R.layout.l3, R.layout.l4}; 
Random r=new Random(); 

в вашем onClick() методе конкретной кнопки

setContentView(r.nextInt(layouts.length)); 
+1

быстрый один, большой (: –

0

Проблема с вашими сообщениями заключается в том, что вы пытаетесь установить случайный индекс как представление контента, а не связанный с ним макет. Я изменил ваш код ниже.

private static final int[] layouts = {R.layout.layout1, R.layout.layout2, R.layout.layout3}; 
Random r = new Random(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button random = (Button) findViewById(R.id.button1); 
    random.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // This is just a number 0 - 2. It should not be set to content view. 
      int index = r.nextInt(layouts.length); 
      int nextLayout = layouts[index]; 
      setContentView(nextLayout); 
     } 
    }); 
} 
0

В вашей деятельности

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Button btn=(Button) findViewById(R.id.btn); 
    btn.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
         setContentView(R.layout.second); 
         } 
       }); 
     } 
0

Каждый идентификатор отображается на R класса представляет собой целое число. Таким образом, вы можете использовать метод nextInt() из класса Random для выбора случайного макета.

Попробуйте что-то вроде этого:

int firstLayout = R.layout.l1; //your first layout 
int numberOfLayouts = 5; // the number of layouts that you have 

myButton.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     Random r = new Random(); 
     setContentView(r.nextInt(numberOfLayouts) + firstLayout); 
    } 
}; 
Смежные вопросы