質問

I always have this problem of java.lang.IllegalStateException:Could not execute method of the activity. I was planning to perform an android component event (ex. Button event - indicating the number of times this button was clicked). Here's the code snippet for this problem:

interface Selection {
    public void clicked();
}
public class ParentClass extends FragmentActivity {
    // fTabs : FragmentTabHost
    // tabs : Map<String, Selection>    
    private void initialize() {
        // fistFrag : FirstChildClass = new FirstChildClass()
        // secondFrag : SecondChildClass = new SecondChildClass()
        tabs.put("first", firstFrag);
        tabs.put("second", secondFrag);
        fTabs.add(fTab.newTabSpec("first").setTitle("First"), firstFrag.getClass(), null)
        fTabs.add(fTab.newTabSpec("second").setTitle("Second"), secondFrag.getClass(), null)
    }
    @Override
   public void onBackPressed() {
       tabs.get(fTabHost.getCurrentTabTag()).clicked();
   }
}    
public class FirstChildClass extends Fragment implements Selection {
        // data : TextView
        // hit : int = 0
        @Override
        public void clicked() {
            data.setText(String.format("Hit Count: %d", ++hit));
        }
    }
public class SecondChildClass extends Fragment implements Selection {
        // data : TextView
        // hit : int = 0
        @Override
        public void clicked() {
            data.setText(String.format("Hit Count: %d", ++hit));
        }
    }

I've tried to assure of clicked() works view interfacing approach by invoking a message on Logcat and it worked but when I used Button the error above always prompts me. I've checked if data is null and it returned true. I am a little bit confused, I've tried to check nullity of data from the Activity methods is returns false but when I access any method override by an interface it always return true. Is there a way to solve this?

役に立ちましたか?

解決

Here's a way my friend told me to solve this problem. Using getSupportFragmentManager. He told me also that creating an Activity or Fragment using its constructor isn't applicable on the Android platform. So I switched by to the conventional way of adding tabs to FragmentTabHost.

@Override
public void onBackPressed() {
    //tabs.get(fTabHost.getCurrentTabTag()).clicked();
    ((Selection) getSupportFragmentManager().findByFragmentByTag(fTabHost.getCurrentTabTag()).clicked();
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top