Java 无法在Android清单中解析活动
我的应用程序不断崩溃,我想这是因为我没有默认的构造函数。至少,这是Android清单文件中引用的内容。我尝试添加一个构造函数,但当我只添加一个空构造函数时,例如,“public LoaderImageView(){}”,它将无法识别它并给我错误。我将复制java和android代码 请帮忙,谢谢 爪哇: 包com.example.imageviewloaderJava 无法在Android清单中解析活动,java,android,constructor,Java,Android,Constructor,我的应用程序不断崩溃,我想这是因为我没有默认的构造函数。至少,这是Android清单文件中引用的内容。我尝试添加一个构造函数,但当我只添加一个空构造函数时,例如,“public LoaderImageView(){}”,它将无法识别它并给我错误。我将复制java和android代码 请帮忙,谢谢 爪哇: 包com.example.imageviewloader import android.content.Context; import android.graphics.drawable.Dra
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>
您应该扩展活动或AppCompatActivity或活动的子体。您不能简单地扩展LinearLayout并假设它是一个活动。在POST中包含您的崩溃日志您需要应用程序的视图,并且您的启动程序java文件没有扩展任何视图(AppCompatActivity),因此,创建一个扩展AppCompatActivity的活动,然后运行您的应用程序。这应该是一个注释而不是答案。那么答案应该是什么?向他解释如何使用一个示例,注释是为了给出一个想法,以便用户可以使用它,答案是给出他/她缺少什么以及如何解决错误的完整想法。