2017-08-13 16 views
-2

私のアプリはクラッシュし続けます。私はデフォルトのコンストラクタを持っていないためだと思います。少なくとも、それはAndroid Manifestファイルで参照されているものです。私は1つを追加しようとしますが、空のコンストラクタを追加すると、たとえば "public LoaderImageView(){}"と認識されず、エラーが表示されます。私はJavaとAndroidのコードをコピーします。Android Manifestでアクティビティを解決できない

ご協力お願いいたします。

Java: package com.example.imageviewloader;

import android.content.Context; 
import android.graphics.drawable.Drawable; 
import android.os.Handler; 
import android.os.Message; 
import android.util.AttributeSet; 
import android.view.View; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.ProgressBar; 

import java.io.IOException; 
import java.net.MalformedURLException; 

/** 
* Created by Owner on 8/12/2017. 
*/ 

public class LoaderImageView extends LinearLayout { 

private static final int COMPLETE = 0; 
private static final int FAILED = 1; 


private Context mContext; 
private Drawable mDrawable; 
private ProgressBar mSpinner; 
private ImageView mImage; 


public LoaderImageView(final Context context, final AttributeSet attrSet) { 
    super(context, attrSet); 
    final String url = attrSet.getAttributeValue(null, "image"); 
    if(url != null){ 
     instantiate(context, url); 
    } else { 
     instantiate(context, null); 
    } 
} 

private void instantiate(final Context context, final String imageUrl) { 
    mContext = context; 

    mImage = new ImageView(mContext); 
    mImage.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
LayoutParams.WRAP_CONTENT)); 

    mSpinner = new ProgressBar(mContext); 
    mSpinner.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
LayoutParams.WRAP_CONTENT)); 

    mSpinner.setIndeterminate(true); 

    addView(mSpinner); 
    addView(mImage); 

    if(imageUrl != null){ 
     setImageDrawable(imageUrl); 
    } 
} 

public void setImageDrawable(final String imageUrl) { 
    mDrawable = null; 
    mSpinner.setVisibility(View.VISIBLE); 
    mImage.setVisibility(View.GONE); 
    new Thread(){ 
     public void run() { 
      try { 
       mDrawable = getDrawableFromUrl(imageUrl); 
       imageLoadedHandler.sendEmptyMessage(COMPLETE); 
      } catch (MalformedURLException e) { 
       imageLoadedHandler.sendEmptyMessage(FAILED); 
      } catch (IOException e) { 
       imageLoadedHandler.sendEmptyMessage(FAILED); 
      } 
     } 
    }.start(); 
} 

private final Handler imageLoadedHandler = new Handler (new 
Handler.Callback() { 
    @Override 
    public boolean handleMessage(Message msg) { 
     switch (msg.what) { 
      case COMPLETE: 
       mImage.setImageDrawable(mDrawable); 
       mImage.setVisibility(View.VISIBLE); 
       mSpinner.setVisibility(View.GONE); 
       break; 
      case FAILED: 
      default: 
       // Could change image here to a 'failed' image 
       // otherwise will just keep on spinning 
       break; 
     } 
     return true; 
    } 
}); 

private static Drawable getDrawableFromUrl(final String url) throws 
IOException, MalformedURLException { 
    return Drawable.createFromStream(((java.io.InputStream)new 
java.net.URL(url).getContent()), "name"); 
} 

} 

マニフェスト:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.imageviewloader"> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:roundIcon="@mipmap/ic_launcher_round" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".LoaderImageView"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

</manifest> 
+0

投稿にクラッシュログを含める – UmarZaii

+0

アプリケーションのビューが必要です。ランチャーJavaファイルはビュー(AppCompatActivity)を拡張していないため、AppCompatActivityを拡張したアクティビティを作成し、アプリケーションを実行してください。 –

答えて

0

あなたが活動やAppCompatActivityや活動のために子孫を拡張する必要があります。単にLinearLayoutを拡張して、それをアクティビティとみなすことはできません。

+0

これはコメントではありません。 –

+0

それから答えは何ですか? –

+0

例を使って何をすべきかを説明するコメントは、ユーザーが作業できるようにアイデアを与えるためのコメントです。不足していることとエラーを解決するために何をすべきかを完全に理解するためのものです。 –

関連する問題