在我的原生扩展的本机java代码中,我需要跳转到一个特定的页面,我试过的是在FREFunction对象的调用函数中启动一个新的Activity,我的代码是这样的:
`ComponentName comp = new ComponentName(arg0.getActivity() ,SecondActivity.class);
Intent intent = new Intent();
intent.setComponent(comp);
arg0.getActivity().startActivity(intent);`
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
EditText show = (EditText) findViewById(R.id.show);
ComponentName componentName = getIntent().getComponent();
show.setText("组件包名");
}
}
来自ddms的logcat,我确信已经执行了SecondActivity类,但是在setContentView(R.layout.second)中失败了; 然后我的本机代码有什么问题,我该如何处理它?任何人都可以帮助我或给我同样的建议吗?
答案 0 :(得分:0)
不幸的是,您无法使用R. *简写来访问ANE中的资源ID。
我写了一个可能对你有帮助的小助手类/函数:
http://labs.distriqt.com/post/1245
它基本上搜索资源包中的资源。
如果您有权访问FREContext实例,也可以使用getResourceId函数,有关详细信息,请参阅以下内容:
答案 1 :(得分:0)
int layoutID;
Intent i = new Intent(arg0.getActivity(), SecondActivity.class);
try {
layoutID = arg0.getResourceId("layout.second");
} catch (Exception e) {
System.out.printf("getResourceID() failed with error:\n\"%s\"\n",e.toString());
Toast.makeText(arg0.getActivity(), "getResourceID() failed" + e.toString(), Toast.LENGTH_SHORT).show();
return null;
}
System.out.printf( "layout ID: %d\n", layoutID);
Toast.makeText(arg0.getActivity(), "success: layout ID is " + String.valueOf(layoutID), Toast.LENGTH_SHORT).show();
i.putExtra("layoutID", layoutID);
然后您可以使用以下方法检索onCreate上的布局ID:
int layoutID = getIntent().getIntExtra("layoutID", -1);
setContentView(layoutID);