Android Calling Intent из другого класса - PullRequest
0 голосов
/ 30 июня 2010

Я вызываю намерения много в моей программе, и я подумал, что я мог бы написать открытый класс, который будет иметь все мои намерения, так что я могу просто вызвать что-то вроде intets.testIntent (params) и затем запустить его.

Я попробовал, но закрываю силу с исключением нулевого указателя.Это весь мой класс.Я знаю, что это, вероятно, небрежно, но я только что изучал Java в течение 2 месяцев, поэтому я все еще любитель.

В любом случае, мой код ниже, и я был бы очень признателен за вашу помощь.

Журнал

  /AI      (17056): made It
V/AI      (17056): Launching Intent
D/AndroidRuntime(17056): Shutting down VM
W/dalvikvm(17056): threadid=3: thread exiting with uncaught exception (group=0x4001b180)
E/AndroidRuntime(17056): Uncaught handler: thread main exiting due to uncaught exception
E/AndroidRuntime(17056): java.lang.NullPointerException
E/AndroidRuntime(17056): at android.app.Activity.startActivityForResult(Activity.java:2749)
E/AndroidRuntime(17056): at android.app.Activity.startActivity(Activity.java:2855)
E/AndroidRuntime(17056): at com.MyApp.intents.testIntent(intents.java:26)
E/AndroidRuntime(17056): at com.MyApp.Starting$1.onClick(Starting.java:52)
E/AndroidRuntime(17056): at android.view.View.performClick(View.java:2364)
E/AndroidRuntime(17056): at android.view.View.onTouchEvent(View.java:4179)
E/AndroidRuntime(17056): at android.widget.TextView.onTouchEvent(TextView.java:6541)
E/AndroidRuntime(17056): at android.view.View.dispatchTouchEvent(View.java:3709)
E/AndroidRuntime(17056): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
E/AndroidRuntime(17056): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
E/AndroidRuntime(17056): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
E/AndroidRuntime(17056): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
E/AndroidRuntime(17056): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
E/AndroidRuntime(17056): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
E/AndroidRuntime(17056): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
E/AndroidRuntime(17056): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
E/AndroidRuntime(17056): at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
E/AndroidRuntime(17056): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
E/AndroidRuntime(17056): at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
E/AndroidRuntime(17056): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(17056): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(17056): at android.app.ActivityThread.main(ActivityThread.java:4363)
E/AndroidRuntime(17056): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(17056): at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(17056): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
E/AndroidRuntime(17056): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
E/AndroidRuntime(17056): at dalvik.system.NativeStart.main(Native Method)

РЕШЕНИЕ: решение, может быть, не решение.Нужно было построить намерение в классе намерений (переименованном в MyIntents), а затем запустить его из другого моего класса.

MyIntents intents1  = new MyIntents();
Intent arIntent = intents1.testIntent("fe", "feet");
startActivity(arIntent);

Это значительно облегчит мою жизнь.:)

1 Ответ

2 голосов
/ 30 июня 2010

Я думаю, что то, что вы делаете (строки для имен классов, создание экземпляров вспомогательного класса каждый раз, когда вам нужно намерение), является грязным.
Я бы предложил иметь вспомогательный класс с фабричными методами, такими как:1003 *

, а затем из Activity:

    Intent intent = getNameIntent(this, "alex");
    startActivity(intent);
    // or
    startActivityForResult(intent, 1024);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...