到目前为止,我只是将所有代码都放在一个主Activity类中。我现在正在尝试对此进行改进,并开设了不同的课程。
我正在制作一个非常简单的应用程序,就像一个故事。它有8页和4个字符。每个字符都有一个图像,一个带其名称的按钮和一个textView。当您单击其按钮时,将显示其文本。
我为每个字符创建了一个类,并在其中放置了与该字符有关的所有方法。即,
public void johnSpeak1 (View view) {
johnText1.setVisibility(View.VISIBLE)
markText1.setVisibility(View.INVISIBLE)
}
这应该意味着当按下“约翰”按钮时,他的文本变为可见,其他人消失了。
当我将其全部放在主活动类中时,它可以很好地工作,但是现在我将其放在自己的类中,当我运行它并按按钮时,我的应用程序就会关闭。
我在主要活动中声明了所有按钮和textviews
。在主要活动的oncreate
中,我为第一页提供了所有findviewbyID
,并将textViews设置为不可见。
到目前为止,我所学到的一切都来自于Udemy视频,虽然很棒,但是却从未提及课程!
我已经将其他课程设置为extends mainActivity
到目前为止,我所做的全都是垃圾。我一直在尝试自己在Google上寻求帮助,但似乎对此感到困惑。
谢谢您的建议!
顺便说一句,我正在使用android studio
丹尼
答案 0 :(得分:0)
首先:请始终共享您的错误日志,以获取快速,清晰的答案。
第二:我认为您的问题是您的活动中某些视图为空。您可以在view> toolwindows> logcat中找到,在应用程序崩溃后,您将看到错误列表,其中某些部分包含可导致您找到错误原因的链接!
编辑: 例如,您为每个字符创建一个类:
public class John extends LinearLayout
{
Context context;
public John(Context context) {
super(context);
this.context = context;
init();
}
public John(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
this.context = context;
init();
}
public John(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.context = context;
init();
}
TextView dialog;
private void init()
{
View view = LayoutInflater.from(context).inflate(R.layout.john_layout, this);
dialog = view.findViewById(R.id.dialog);
}
public void setShowHideDialog(boolean mustShow)
{
if(mustShow)
dialog.setVisibility(VISIBLE);
else
dialog.setVisibility(GONE);
}
}
在john_layout xml中,放置ImageView和TextView并将它们与您的图像和角色对话框一起设置
然后在您的Activity xml中添加john_layout,如下所示:
<John android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ch_john"/>
最后,在活动中以这种方式使用John:
final John john = findViewById(R.id.ch_john);
john.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mark.setShowHideDialog(false);
john.setShowHideDialog(true);
}
});