現在Activityを拡張しているクラスがあり、findViewById、ArrayAdapterなどのメソッドがあります。 私はそれを独立したクラスにしたいと思います未定義。何が問題ですか?クラスをインポートするだけで十分ではありませんか?たとえば、android.view.ViewをfindViewByIdにインポートしますが、それでも違いはありません。 お知らせください。アクティビティをアンドロイドで拡張しないクラスでfindviewbyidを使用しています
findViewById答えて
あなたはこのようなコンストラクタであなたの第二のクラスにあなたのアクティビティのインスタンスを渡す必要があります。
あなたActivity
インスタンス化するあなたのクラスでは、次のように:
MyClass instance = new MyClass(this);
そして、あなたの第二のクラスでは、コンストラクタは次のようになります。
public class MyClass {
public Activity activity;
//.... other attributes
public MyClass(Activity _activity){
this.activity = _activity;
//other initializations...
}
}
、その後、あなたはを使用したいときあなたは、あなたが持っている必要があります唯一の事はActivity
の文脈でActivity
に属している任意の関数をコールする場合
EditText txt = (EditText)this.activity.findViewById(R.id.txt);
はActivity
クラスの非静的パブリックメソッドであるため、それだけActivity
オブジェクトのために利用可能です。したがって、android.view.View
とandroid.app.Activity
をインポートすると、インポートできません。これを利用できるようにするには、Actvity
オブジェクトを渡すことができます。通常は、アクティビティのポイントはthis
です。ただし、UIスレッドで常にビューを更新する必要があることに注意してください。
[OK]を、それはできないのですが、ViewクラスのメソッドをfindViewByIdされていない理由を私は理解できますか?また、UIスレッドで常にビューを更新する必要がある理由を説明することもできます(主なアクティビティを参照していますか?) – Namratha
:方法は、あなたはこのように行うことができます。
例えば、ここで
class A extends Activity{
Context ctx;
void oncreate(Bundle b)
ctx = this;
B bob = new B(ctx);
}
}
は、クラスB
Class B
{
B(Activity a)
{
a.anyFunctionOfActivity();
}
}
これはAsyncTaskでは機能しません。 –
@IgorGanapolskyはここに同じです。 AsyncTaskでこの作業を行うには、何をすべきですか? –
で次のことを試してください:
public static View getLayoutByRes(@LayoutRes int layoutRes,@Nullable ViewGroup viewGroup)
{
final LayoutInflater factory = getSystemService(Context.LAYOUT_INFLATER_SERVICE);
return factory.inflate(layoutRes, viewGroup);
}
TextView tv = (TextView) getLayoutByRes(R.layout.xxx ,Null).findViewById(R.id.editd);
- 1. アクティビティを拡張しないクラスからアクティビティを開始
- 2. SwiftでObj-Cクラス拡張を使用していますか?
- 3. Android Java - なぜ拡張アクティビティではない - >新しいアクティビティ
- 4. ES6クラス(React.Componentを拡張)ではなくReact.createClassを使用していますか?
- 5. アクティビティを拡張しないクラスからブロードキャストを送信できますか?
- 6. すでにActionBarActivityを拡張しているメインアクティビティ内で追加クラスを拡張していますか?
- 7. 拡張クラス内の拡張メソッド自体を使用して
- 8. アクティビティでないクラスでAndroidでTelephonyManagerを使用しています
- 9. 拡張マネージャを使用しないでVS2010拡張機能をアンインストールする
- 10. アンドロイド - 大規模アプリケーション用の新しいアンドロイド拡張を使用する
- 11. 拡張アクティビティではないクラスでgetResouces()を呼び出す方法は?
- 12. Androidでアクティビティを拡張していないクラスからリソースファイルにアクセスするには?
- 13. クラスはクラスを拡張してインターフェイスを実装できます
- 14. アクティビティのクラスを拡張する
- 15. モジュールを使用して "has_many"プラグインでモデルを拡張します
- 16. MOTODEVを使用してAndroidでMapActivityのアクティビティを拡張するにはどうすればよいですか?
- 17. Activityを拡張しないクラスからsetContentView(int)を使用する方法
- 18. クラス拡張を使用して.mファイルで初期化メソッドをいつ作成しますか?
- 19. 便宜上Spriteクラスを拡張していますか?
- 20. Chrome拡張機能:「キャッチされていないエラー:「getBackgroundPage」は拡張プロセスでのみ使用できます....」
- 21. UIComponent拡張クラスにUIComponent拡張クラスが表示されない
- 22. React.Componentを拡張しない
- 23. "java"コマンドで.class拡張子を使用しないのはなぜですか?
- 24. AndroidでORMLiteのBaseDaoImplクラスを拡張して機能を拡張する方法
- 25. 私のプロジェクトで拡張機能libを使用しないでください
- 26. コードを再利用して複数のアクティビティにまたがってFrameLayoutでアクティビティを拡張する
- 27. PHPでReflectionクラスを使用して拡張インターフェイスを取得する方法
- 28. Facebookアカウントキットを使用できません:com.facebook.accountkit.ui.ConstrainedLinearLayoutクラスを拡張していません
- 29. 1つの抽象クラスが別の抽象クラスを拡張して機能を拡張できますか?
- 30. 部分クラスを使用してWCFプロキシを拡張し、OnDeserializing:OnDeserializingが発生しない
これは機能しません。 findViewByIdは、ContextではなくActivityでのみ呼び出すことができます。私はあなたのアプローチを試みましたが、それでも私にエラーが出ました。 – Namratha
私の編集を見て、ContextのActivity intsteadのインスタンスを渡してください:) – Houcine
Ok、私はそれを行いました:) ActivityオブジェクトのfindViewByIdを呼び出すと、見つけようとしているListiewがNULLになります。これは、ListViewを含むXMLファイルに対してsetContentViewを使用していないためですか? – Namratha