0

私はプロジェクトをかなり進めていて、望ましくない障害にぶつかり、解決策を見つけることができません。私がやろうとしていることを説明すると思われるsudoコードがいくつかありますが、完全なコードではありません。ImageHandler に渡そうとすると、Main クラスの ContextWrapper で NullPointerException というエラーが発生します。残念ながら、ImageViews と私はすべてのビューを疑っていますが、アクティビティが onCreate を呼び出す前にドローアブルを解決しようとしています。そのため、画像を A​​ctivity Constructor に保存する必要がありましたが、コンテキストを渡すことができません。AsyncTask またはハンドラがアクティビティの onCreate() を待機することを検討しましたが、SurfaceView に戻って独自のデザインを作成することもできます。私は引き続き調べますが、Android の経験が豊富な人がより良い設計または解決策を知っていれば、大きな助けになるでしょう。また、互換性のある Eclipse レイアウト プレビューアも非常に推奨されます。また、多くのイメージは同じですが、パフォーマンスがひどい場合でも、各イメージビューに目的のレイヤードローアブルを個別に持たせるようにしました。imagehandler が onCreate で作成された場合、ImageView がそのコンストラクターでそれを呼び出そうとすると null になるため、Activity にコンストラクターを追加する必要がありました。Activity.onCreate が呼び出される前に、アクティビティ コンポーネントが準備を整えている理由は、まだよくわかっていません。また、多くのイメージは同じですが、パフォーマンスがひどい場合でも、各イメージビューに目的のレイヤードローアブルを個別に持たせるようにしました。imagehandler が onCreate で作成された場合、ImageView がそのコンストラクターでそれを呼び出そうとすると null になるため、Activity にコンストラクターを追加する必要がありました。Activity.onCreate が呼び出される前に、アクティビティ コンポーネントが準備を整えている理由は、まだよくわかっていません。また、多くのイメージは同じですが、パフォーマンスがひどい場合でも、各イメージビューに目的のレイヤードローアブルを個別に持たせるようにしました。imagehandler が onCreate で作成された場合、ImageView がそのコンストラクターでそれを呼び出そうとすると null になるため、Activity にコンストラクターを追加する必要がありました。Activity.onCreate が呼び出される前に、アクティビティ コンポーネントが準備を整えている理由は、まだよくわかっていません。

 public class MainActivity extends Activity {

ImageHandler ih;

MainActivity(){
            Log.d("Acitivity", "Constructed");
    ih=new ImageHandler(this);
    //ih=new ImageHandler(this.getApplicationContext());
    //ih=new ImageHandler(this.getBaseContext());
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
            Log.d("Activity", "Created");
    setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

public LayerDrawable getImage(int some_identifier){
    return ih.getImage(some_identifier);
}

 }

===================

 public class ImageHandler {
LayerDrawable[] image;

ImageHandler(Context context){
            Log.d("ImageView", "Constructed");
    //manipulate resource images to create custom layerdrawables and store.     

    //originally attempted to create a layer.xml and although it worked
    //in the emulator perfectly the behavior was quite different in live tests.
    //although it made sense any change to layer.xml images was global for all who used it
    //the strange behavior was that the emulator behaved as desired.
}


public LayerDrawable getImage(int identifier){
    return image[identifier];
}
 }

====================

 public class SomeImageView extends ImageView{

public SomeImageView(Context context, AttributeSet attrs) {
    super(context, attrs);
    int some_identifier=0;
    this.setImageDrawable(((MainActivity)context).getImage(some_identifier));
}

 }

助けてくれたコミュニティにもう一度感謝します。

4

0 に答える 0