Android 当GUI部件位于片段外部时,OnActivityResult
我有一个两窗格的片段设计,其中的细节片段处理在最左边的listfragment上单击的项目 因为我有很多不同的列表项,它们有不同的GUI,每一个,我想把GUI部分的处理放在不同的单独类中。 我正在使用反射来精简ItemDetailFragment中的代码:(下面的代码已精简) 我在gui_handler_基类中有一个onActivityResult方法,在ItemDetailFragment中有一个,但它们都没有被调用。Android 当GUI部件位于片段外部时,OnActivityResult,android,user-interface,android-fragments,onactivityresult,Android,User Interface,Android Fragments,Onactivityresult,我有一个两窗格的片段设计,其中的细节片段处理在最左边的listfragment上单击的项目 因为我有很多不同的列表项,它们有不同的GUI,每一个,我想把GUI部分的处理放在不同的单独类中。 我正在使用反射来精简ItemDetailFragment中的代码:(下面的代码已精简) 我在gui_handler_基类中有一个onActivityResult方法,在ItemDetailFragment中有一个,但它们都没有被调用。 我该怎么做???你的问题很含糊。为什么要使用onActivityResul
我该怎么做???你的问题很含糊。为什么要使用onActivityResult?活动。startActivityForResult(I,1);为什么?为什么不在片段类中实现onclicklistener类并完成它呢?似乎在试图减少代码时,你为自己制造了更多的麻烦。同时,在代码中去掉数字并使用常量。您必须调用intent并在同一片段中使用intent。更进一步,为什么要从片段中提取GUI功能?你不应该这样。即使您正在创建自定义功能,您仍然需要在片段中处理片段的功能
//if you want to try this… normally when receiving a camera intent this is what you can do.
if (resultCode == Activity.RESULT_OK) {
switch (requestCode) {
case yourResultCode:
doSomethingWithYourResult;
break;
]
我知道你在问什么,而且据我所知,你的设计不符合标准的Android设计模式。我认为很明显,我想在以后处理结果时,我最终会进入onActivityResult。我在发布之前清除了方法,因为我的问题的核心不是方法本身。我将GUI部分分为不同的类来保持fragment类的简短,我有大量的代码做不同的事情,所以我认为这样设计我的应用程序是很好的。问题不是处理结果本身(resultCode…),而是没有调用OnActivityResult,因为它在fragment类之外。同样,为什么要将GUI代码放在fragment之外。这不是好的代码设计。您可能有不同的实用程序类来处理信息,但对于GUi来说,大多数都应该发生在控制器类中。碎片应该在做自己的工作。这就是活动和碎片的全部要点;他们天生就是控制者。想想MVC。就结果而言。很明显你想做什么,但不清楚的是为什么?换句话说,你对结果做了什么?这还不清楚。理由是什么?我想将不同的GUI行为封装到不同的独立类中。我将不得不处理大量的控制代码,我不想以一个片段类的代码行数超过10000行而告终。这就是为什么。如果你有超过10000行代码,那么你在一个片段中做的太多了。为什么不在frag中处理UI,在util类中处理所有非UI功能?它将减少您的代码。
public void setupGUI(MyListItem item, final Activity activity) {
buttonRun.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
final String FILENAME = "XXX";
Intent I = new Intent(activity,KTActivity.class);
Bundle b = new Bundle();
b.putSerializable("FileName",FILENAME);
I.putExtras(b);
activity.startActivityForResult(I,1);
return;
}
});
@Override
public void onActivityResult(int requestCode, int resultCode,
Intent data) {
// I WANT TO END UP HERE WHEN THE ACTIVITY RETURNS;
}
//if you want to try this… normally when receiving a camera intent this is what you can do.
if (resultCode == Activity.RESULT_OK) {
switch (requestCode) {
case yourResultCode:
doSomethingWithYourResult;
break;
]