SwitchDisplayable для Android - PullRequest
       2

SwitchDisplayable для Android

0 голосов
/ 25 ноября 2010

Я все еще портирую приложение J2ME на Android, и теперь моя проблема с графическим интерфейсом. Судя по тому, что я видел, у Android отличная активность, но мой J2ME наполнен классическим:

public void switchDisplayable(Alert alert, Displayable nextDisplayable) {
        Display display = getDisplay();
        if (alert == null)
            display.setCurrent(nextDisplayable);
        else 
            display.setCurrent(alert, nextDisplayable);
}

Я просто не могу сделать каждый Displayable для Activity, поэтому я подумал о замене их на View. Я попробовал это, но это просто не работает, приложение не меняет экран.

Обновление:

Спасибо, что ответили, но поместили все сообщения в FrameLayout и все еще ничего. Это ядро ​​моего тестового кода, поэтому вы можете проверить его:

public class TestActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);        
        setContentView(R.layout.main);
        TextView t = (TextView)findViewById(R.id.text); // Shows "Hi"
        showDialog(); // it just shows a dialog asking if the user wants to change screen

    }
    showDialog() {
        // in OnClick()... i do the following, and here is where it fails, i tried so far:        
        TestView testv= new MarcoLoco(MFActivity.this);
    setContentView(testv);
        testv.invalidate();
    testv.requestFocus();
    testv.showMeSomething();
    }


public class TestView extends View{
    private Context context;
    TextView tv;    
    public TestView(Context context) {
        super(context);
        this.context=context;
    }   
    public void showMeSomething() {
        tv = (TextView)findViewById(R.id.tessto); // it should show "Bye"
    }
}

После нажатия кнопки «Привет» исчезает с экрана, но ничего не появляется, нет «Пока».

Почему, о, почему!?

Ответы [ 3 ]

0 голосов
/ 26 ноября 2010

Я не уверен, что полностью понимаю ваши вопросы, но попробуйте посмотреть ViewAnimator и ViewFlipper - возможно, они могут помочь

PS. просто из любопытства ... вы пробовали какой-нибудь из автоматических преобразователей?

0 голосов
/ 28 ноября 2010

Почему вы переходите с J2ME на Android самостоятельно, вместо использования инструмента конвертации? Быстрее, не нужно учиться и преуспевать с Android, не нужно отлаживать и поддерживать 2 базы кода ... Попробуйте на www.UpOnTek.com. Спасибо.

0 голосов
/ 25 ноября 2010

У меня нет опыта работы с Java ME, но это может помочь вам

Поместите ваши представления в FrameLayout , тогда вы можете использовать

mViewA.setVisibility(View.VISIBLE);
mViewB.setVisibility(View.GONE);
mViewA.requestFocus();

для переключения между различными видами

РЕДАКТИРОВАТЬ:

Вот краткий пример программы, которая переключается между 2 просмотра текста:

public class test extends Activity {
    boolean showTV1 = true;

    OnClickListener ocl = new OnClickListener() {
        @Override
        public void onClick(View v) {
            showTV1= !showTV1;
            if (showTV1){
                tv1.setVisibility(View.VISIBLE);
                tv2.setVisibility(View.GONE);
                tv1.requestFocus();
            } else {
                tv2.setVisibility(View.VISIBLE);
                tv1.setVisibility(View.GONE);
                tv2.requestFocus();
            }
        }
    };

    private TextView tv1, tv2;  

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tv1 = (TextView) findViewById(R.id.TextView01); 
        tv2 = (TextView) findViewById(R.id.TextView02);

        tv1.setOnClickListener(ocl);
        tv2.setOnClickListener(ocl);
    }
}

и main.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/frameLayout01" android:layout_width="fill_parent"
    android:layout_height="fill_parent"  >
    <TextView android:id="@+id/TextView01" android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:background="#0f0"
        android:text="Hi" />
    <TextView android:id="@+id/TextView02" android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:background="#f00"
        android:text="Bye" android:visibility="gone"/>
</FrameLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...