Glad it works. Well, what you were trying to instantiate was a View Component, weren't you? I don't think it matters that you were using reflection for it.Why a view component needs the looper before it is attached to an active Window, I don't know.
On Wed, Apr 8, 2009 at 2:31 PM, Ask <[email protected]> wrote: > > It works nice after I had added only one line : "Looper.prepare();" in > the begining of the > public void run(); method. > > But still I could not understand, > > How Looper.prepare(); provides a handler to "Object o = c.newInstance > ();" Line??? > > In short, got the solution but wants some clearification. > > Regards, > Asif > > On Apr 8, 11:44 am, Ask <[email protected]> wrote: > > Hi all, > > > > Thanks 4 ur reply. > > > > Actually I want to call some methods of one Activity > > (test.check.Test1.java) from another activity (my current activity) at > > runtime in the separate Thread. In the main GUI Thread this works > > fine. > > > > This Test1.java activity resides in the test.check.apk file which is > > stored in the /sdcard. This is simply activity class with only one > > function xyz() (which I want to call) and returns a String "Hellooo > > Man" as follows > > > > package test.check; > > > > import android.app.Activity; > > import android.os.Bundle; > > > > public class Test1 extends Activity { > > /** Called when the activity is first created. */ > > @Override > > public void onCreate(Bundle savedInstanceState) { > > super.onCreate(savedInstanceState); > > setContentView(R.layout.main); > > } > > > > public String xyz(){ > > return "Hellooo Man"; > > } > > > > }. > > > > But during the execution of this function from another activity > > (another .apk) at runtime in the separate Thread causes exception at > > this line > > > > "Object o = c.newInstance();" > > > > which I came to know during debugging , otherwise class is Loaded > > nicely and also loaded method xyz() without any problem. > > But to execute that method I need to create Obect instance and then > > Method.invoke(o); > > > > I hope u got it now. > > > > Dianne:: Exception race is as follows, > > > > 04-08 11:57:08.802: ERROR/AndroidRuntime(240): Uncaught handler: > > thread Thread-8 exiting due to uncaught exception > > 04-08 11:57:08.812: ERROR/AndroidRuntime(240): > > java.lang.RuntimeException: Can't create handler inside thread that > > has not called Looper.prepare() > > 04-08 11:57:08.812: ERROR/AndroidRuntime(240): at > > android.os.Handler.<init>(Handler.java:111) > > 04-08 11:57:08.812: ERROR/AndroidRuntime(240): at > > android.app.Activity.<init>(Activity.java:660) > > 04-08 11:57:08.812: ERROR/AndroidRuntime(240): at > > test.check.Test1.<init>(Test1.java:6) > > 04-08 11:57:08.812: ERROR/AndroidRuntime(240): at > > java.lang.Class.newInstance(Native Method) > > 04-08 11:57:08.812: ERROR/AndroidRuntime(240): at > > android.giude.SocketFTP.SocketFTP.readTheFile(SocketFTP.java:128) > > 04-08 11:57:08.812: ERROR/AndroidRuntime(240): at > > android.giude.SocketFTP.SocketFTP$1.run(SocketFTP.java:50) > > > > Mariano : I have not used Looper.prepare(), > > Is it required?? If yes then where and how to define > > handler for that? > > On Apr 7, 10:20 pm, Dianne Hackborn <[email protected]> wrote: > > > > > > > > > Also you need to look at the exception stack trace. It will show you > who is > > > trying to create a Handler. > > > > > On Tue, Apr 7, 2009 at 9:44 AM, Streets Of Boston > > > <[email protected]>wrote: > > > > > > But do you want a Looper and Handler in your thread 't'? > > > > Why do you load it in another thread? > > > > Are you planning in dispatching and handling messages in this thread > > > > 't'? > > > > > > If not, don't start adding all this stuff just to make the run-time > > > > happy. > > > > > > Put a breakpoint in your default constructor of your test.check.Test1 > > > > class and see which line of code needs a Handler or Looper. > > > > > > What are you trying to accomplish? It looks like you're trying to > load > > > > and construct a class from an APK (check.apk). Are you initializing > an > > > > Activity from this APK called 'Test1'? If so, I understand why it may > > > > need a looper/handler. But if you're loading an Activity (Test1) > > > > within another Activity (the one trying to load check.apk), you may > > > > get into a heap of other trouble. But i'm not an expert on this at > > > > all. Google engineers will know much more about this. > > > > > > On Apr 7, 10:55 am, Ask <[email protected]> wrote: > > > > > Hi Streets, > > > > > > > I dont think this is the case. > > > > > > > Same code executes nicely If I call that method in the onCreate() > > > > > method (i.e. main thread itself) > > > > > > > problem occurs in the Object creation if I will call this method > > > > > readTheFile() in the Thread. > > > > > Can you give any info. regarding how I can define Looper and > Handler > > > > > in my code to execute it without any error.??? > > > > > > > On Apr 7, 7:00 pm, Streets Of Boston <[email protected]> > wrote: > > > > > > > > It could be that during the construction of class > test.check.Test1, a > > > > > > Handler or something similar (i.e. something needing the > main-thread's > > > > > > message-queue) is constructed. Look at your test.check.Test1 > > > > > > implementation and see if this is the case. > > > > > > > > If this is the case, you will get an exception if the constructor > of > > > > > > test.check.Test1 is executed on any other thread than the > main-thread > > > > > > with the message queue. > > > > > > > > You would have gotten the same exception if you would have called > 'new > > > > > > test.check.Test1()'. > > > > > > > > On Apr 7, 9:17 am, Ask <[email protected]> wrote: > > > > > > > > > Is there any handler needed for that?? Any Idea??? > > > > > > > > > On Apr 7, 3:58 pm, Ask <[email protected]> wrote: > > > > > > > > > > Hi, > > > > > > > > > > I am using Reflection APIs in the background thread to call a > > > > method > > > > > > > > dynamically from another application but I am getting the > > > > Exception: > > > > > > > > > > "java.lang.RuntimeException: Can't create handler inside > thread > > > > that > > > > > > > > has not called Looper.prepare() " > > > > > > > > > > at a line : Object o = c.newInstance(); > > > > > > > > > > my code in the Thread is as follows, > > > > > > > > onCreate > > > > > > > > > > public void onCreate(Bundle icicle) { > > > > > > > > super.onCreate(icicle); > > > > > > > > setContentView(R.layout.main); > > > > > > > > > > hh_text = (TextView)findViewById(R.id.server_start); > > > > > > > > > > Thread t = new Thread() > > > > > > > > { > > > > > > > > public void run() > > > > > > > > { > > > > > > > > readTheFile(); > > > > > > > > > > } > > > > > > > > > > }; > > > > > > > > t.start(); > > > > > > > > } > > > > > > > > > > public void readTheFile() { > > > > > > > > try { > > > > > > > > > > PathClassLoader loader = new > PathClassLoader( > > > > "/sdcard/ > > > > > > > > test.check.apk", ClassLoader.getSystemClassLoader()); > > > > > > > > Class c = null; > > > > > > > > > > c = loader.loadClass("test.check.Test1"); > > > > > > > > > > Log.i("See"," Test Class Found ...."); > > > > > > > > > > Method method = c.getMethod("xyz", null); > > > > > > > > > > Object o = c.newInstance(); // This line > throws > > > > exception > > > > > > > > String s = (String) method.invoke(o); > > > > > > > > Log.i("See","Got method: " + s); > > > > > > > > } catch (Exception e) { > > > > > > > > // TODO Auto-generated catch block > > > > > > > > e.printStackTrace(); > > > > > > > > } } > > > > > > > > > > Please help.. If you know the issue. > > > > > > > > > > On Apr 6, 7:14 pm, Ask <[email protected]> wrote: > > > > > > > > > > > Thanx Mark for your quick reply. I will try it out and get > back > > > > > > > > > > > On Apr 6, 6:49 pm, Mark Murphy <[email protected]> > wrote: > > > > > > > > > > > > Asif k wrote: > > > > > > > > > > > But in my case, I am getting all 3 messages at a > time > > > > after > > > > > > > > > > > activity execution completed. > > > > > > > > > > > > That is probably because you are doing long-running work > on the > > > > UI thread. > > > > > > > > > > > > > Is there any API available, using which > > > > > > > > > > > I can show the status during the execution also. > > > > > > > > > > > > Anything long-running should be in a background thread, > in the > > > > activity > > > > > > > > > > or wrapped in a service. Then, use Handler or > runOnUiThread() > > > > or > > > > > > > > > > something so the background thread can have the UI thread > > > > update your > > > > > > > > > > TextView. > > > > > > > > > > > > -- > > > > > > > > > > Mark Murphy (a Commons Guy)http://commonsware.com| > > > >http://twitter.com/commonsguy > > > > > > > > > > > > Android App Developer Training: > > > >http://commonsware.com/training.html-Hidequotedtext- > > > > > > > > > > > - Show quoted text -- Hide quoted text - > > > > > > > > > > - Show quoted text -- Hide quoted text - > > > > > > > > > - Show quoted text -- Hide quoted text - > > > > > > > > - Show quoted text -- Hide quoted text - > > > > > > > - Show quoted text - > > > > > -- > > > Dianne Hackborn > > > Android framework engineer > > > [email protected] > > > > > Note: please don't send private questions to me, as I don't have time > to > > > provide private support, and so won't reply to such e-mails. All such > > > questions should be posted on public forums, where I and others can see > and > > > answer them.- Hide quoted text - > > > > > - Show quoted text -- Hide quoted text - > > > > - Show quoted text - > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---

