0

在我的原生扩展的原生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 的日志中,我确定 SecondActivity 类已被执行,但在 setContentView(R.layout.second) 处失败;那么我的本机代码有什么问题,我该如何处理?任何机构都可以帮助我或给我同样的建议吗?

4

2 回答 2

0

遗憾的是,您不能使用 R.* 简写从 ANE 中访问资源 ID。

我写了一个可能对你有帮助的小助手类/函数:

http://labs.distriqt.com/post/1245

它基本上在资源包中搜索您的资源。

如果您有权访问您的 FREContext 实例,您还可以使用 getResourceId 函数,有关更多信息,请参阅以下内容:

http://help.adobe.com/en_US/air/extensions/WS39e706a46ad531be-fd70de2132a8f3874e-8000.html#WS39e706a46ad531be-fd70de2132a8f3874e-7fff

于 2013-02-03T04:47:34.367 回答
0

在 startActivity 之前使用 getResourceID

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);
于 2013-07-30T04:03:41.773 回答