Начать деятельность в FREFunction воздуха родного расширения
В нативном Java-коде моего нативного расширения мне нужно перейти на определенную страницу. Я попытался запустить новую операцию в функции вызова объекта FREFunction, мой код выглядит так:
`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("组件包名");
}
}
из logcat ddms я уверен, что класс SecondActivity был выполнен, но потерпел неудачу в setContentView(R.layout.second); тогда что не так с моим родным кодом, как я могу с ним справиться? может ли какое-либо тело помочь мне или дать мне те же советы?
2 ответа
К сожалению, вы не можете использовать сокращение R.* для доступа к идентификатору ресурса из ANE.
Я написал небольшой вспомогательный класс / функцию, которые могут быть вам полезны:
http://labs.distriqt.com/post/1245
Он в основном ищет пакеты ресурсов для вашего ресурса.
Если у вас есть доступ к вашему экземпляру FREContext, вы также можете использовать функцию getResourceId, для получения дополнительной информации см. Следующее:
http://help.adobe.com/en_US/air/extensions/WS39e706a46ad531be-fd70de2132a8f3874e-8000.html
Перед 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 с помощью этого:
int layoutID = getIntent().getIntExtra("layoutID", -1);
setContentView(layoutID);