Параметр в кнопке для изменения активности - PullRequest
0 голосов
/ 22 ноября 2011

Моя кнопка отправляет параметр в функцию.

<Button
    android:id="@+id/tela1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Chinese Day"
    android:onClick="loadPage"
    android:tag="page1"
    />

Моя функция должна использовать этот параметр для загрузки действия page1.

public void loadPage(View view) {
    String page = (String) view.getTag();                
    setContentView(R.layout.page);
}

Как заставить это работать?

Tks

Ответы [ 2 ]

0 голосов
/ 22 ноября 2011

Вы хотите указать в теге кнопки название макета, верно?Попробуйте следующее:

String page = (String) view.getTag();  
int layoutId= getResources().getIdentifier(page, "layout", getPackageName());          
setContentView(layoutId);    

Надеюсь, это поможет.

0 голосов
/ 22 ноября 2011

Вы можете использовать API отражения Java .

Каждое действие является целым числом в R.layout. Вам нужно только найти атрибут внутри R.layout и затем получить его целочисленное значение, чтобы засунуть его в setContentView.

try {
    String tag = (String) btn.getTag(); // Button in variable "btn"

    Class<R.layout> cls = R.layout.class;
    Field field = cls.getDeclaredField(tag);

    Integer obj = (Integer) field.get(null); // You could do these two in one line
    int value = obj.intValue();

    Log.i("Test", "Actvity id code = " + obj.toString()); // Testing code
    setContentView(value);
}
catch (Exception e) {
    e.printStackTrace();
    return;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...