我正在使用Android进行第一次实验,我在这个简单的应用程序中遇到了以下问题。
基本上我的应用程序包含 ImageView ,显示背景图像, TextView 显示消息和按钮。
当用户点击此按钮时,我的TextView文本必须更改,我的 * ImageView 的背景图像也必须更改。
这是我的 activiy_main.xml 文件,其中包含我的主要活动的布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#B388FF"
android:orientation="vertical"
tools:context=".MainActivity">
<ImageView
android:id="@+id/android_cookie_image_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:scaleType="centerCrop"
android:src="@drawable/before_cookie" />
<TextView
android:id="@+id/status_text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="16dp"
android:text="I'm so hungry"
android:textColor="@android:color/white"
android:textSize="34sp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:text="EAT COOKIE"
android:onClick="eatCookie"/>
</LinearLayout>
这是上一个活动的代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void eatCookie(View v) {
TextView messaggio = (TextView) findViewById(R.id.status_text_view);
messaggio.setText("I'm so full");
ImageView sfondo = (ImageView) findViewById(R.id.android_cookie_image_view);
sfondo.setImageDrawable(Drawable.createFromPath("@drawable/after_cookie"));
}
}
正如您所看到的,当用户点击按钮时,它会执行首先检索 TextView 引用的 eatCookie()方法并更改此的TextView 即可。它工作正常。
然后它检索与 ImageView 相关的引用,并尝试更改已查看的immage,我已经通过这一行完成了它:
sfondo.setImageDrawable(Drawable.createFromPath("@drawable/after_cookie"));
在我的项目中,我已将 after_cookie.jpg 文件放入 / res / drawable / 文件夹中。
问题在于它无法运作。 android_cookie_image_view 的默认图像会消失,但不会被 after_cookie.jpg 图像替换。
有什么问题?我错过了什么?我该如何解决这个问题?
答案 0 :(得分:0)
改用它。
ImageView sfondo = (ImageView) findViewById(R.id.android_cookie_image_view);
sfondo.setImageDrawable(getResources().getDrawable(R.drawable.after_cookie));
并确保在
eatCookie
上调用onCreate
函数。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
eatCookie();
}
答案 1 :(得分:0)
试试这个
sfondo.setImageDrawable(getResources().getDrawable(R.drawable.after_cookie));