我仍然将J2ME应用程序移植到Android,现在我的问题在于GUI。 对于我所看到的,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"
}
}
OnClick后,“Hi”从屏幕上消失但没有出现,没有“再见”。
为什么,哦,为什么!?
答案 0 :(得分:0)
我对Java ME没有任何考虑,但这可能对您有所帮助
将您的观点放在FrameLayout内,然后您可以使用
mViewA.setVisibility(View.VISIBLE);
mViewB.setVisibility(View.GONE);
mViewA.requestFocus();
在不同视图之间切换
编辑:
这是一个简短的示例程序,可在两个文本视图之间切换:
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>
答案 1 :(得分:0)
我不确定我是否完全理解您的问题,但请尝试查看ViewAnimator和ViewFlipper - 也许这些可以提供帮助
PS。只是出于好奇...你试过任何自动转换器吗?
答案 2 :(得分:0)
为什么要自己从J2ME移植到Android,而不是使用转换工具? 更快,无需学习和擅长Android,无需调试和维护2个代码库...请在www.UpOnTek.com上试一试。感谢。