这个java代码错过了什么部分

时间:2016-07-25 05:57:10

标签: android android-layout button

我正在尝试做简单的交互界面,我通过android链接以下方法:onClick所以我应该在单击按钮时显示替代图像和文本,但是当我点击按钮时没有发生了,这里遗漏的部分是什么

 public void eatCookie(View view) {
    // TODO: Find a reference to the ImageView in the layout. Change the image.

    ImageView eated = new ImageView(this);
    eated.setImageResource(R.drawable.after_cookie);
    TextView eatedtext = new TextView(this);
    eatedtext.setText("i'm so full");
  TextView eatedText = (TextView)findViewById(R.id.status_text_view);

    // TODO: Find a reference to the TextView in the layout. Change the text.

}

5 个答案:

答案 0 :(得分:1)

第一个问题:

假设您创建了TextView和ImageView:

ImageView eated = new ImageView(this);
TextView eatedtext = new TextView(this);

在您的活动中,我确定您使用的是xml布局或自定义ViewGroup,因此您错过了代码,您可以通过调用{{3}将eatedeatedtext添加到布局中方法。

第二个问题:

如果我们假设您确实创建了视图并添加了它们,那么您仍然遇到问题,因为您没有通过调用addView方法为eatedeatedtext指定布局参数

<强>解决方案

我认为你需要写一些类似的东西:

ImageView eated = (ImageView) findViewById(R.id.eated_image);
eated.setVisibility(View.VISIBLE);
eated.setImageResource(R.drawable.after_cookie);

TextView eatedText = (TextView) findViewById(R.id.status_text_view);
eatedText.setVisibility(View.VISIBLE);
eatedText.setText("i'm so full");

在您的xml中,您需要为这些视图设置属性android:visibility="gone"android:visibility="invisible"

答案 1 :(得分:0)

我想,你已经在layout-XML中定义了TextView。如果是这样,您不必创建新的TextView对象,而是改变现有对象。

    TextView eatedText = (TextView)findViewById(R.id.status_text_view);
    eatedtext.setText("i'm so full");  

答案 2 :(得分:0)

试试这个

public void eatCookie(View view) {
    // TODO: Find a reference to the ImageView in the layout. Change the image.

    LinearLayout linearLayout = new LinearLayout(this);
    setContentView(linearLayout);
    linearLayout.setOrientation(LinearLayout.VERTICAL);

    ImageView eated = new ImageView(this);
    TextView eatedtext = new TextView(this);
    eated.setImageResource(R.drawable.after_cookie);
    eatedtext.setText("i'm so full");

    linearLayout.addView(eated);
    linearLayout.addView(eatedtext);

    // TODO: Find a reference to the TextView in the layout. Change the text.

}

答案 3 :(得分:0)

请阅读评论

if="[[ifIsOfType(abc.status,'final'.toUpperCase())]].

将您的XML文件 public void eatCookie(View view) { // TODO: Find a reference to the ImageView in the layout. Change the image. ImageView eated = (ImageView)findViewById(R.id.android_cookie_image_view); eated.setImageResource(R.drawable.after_cookie); TextView eatedText = (TextView)findViewById(R.id.status_text_view); eatedtext.setText("i'm so full"); } 更新为android:layout_height="0dp"

android:layout_height="wrap_content"

答案 4 :(得分:0)

感谢帮助大家。

这是正确的答案,正如您所提到的,您不需要在xml代码文件中识别标识的对象,例如ImageViewTextView,因此正确的代码将是

 public void eatCookie(View view) {
        // TODO: Find a reference to the ImageView in the layout. Change the image.
        ImageView image = (ImageView)findViewById(R.id.android_cookie_image_view);

        image.setImageResource(R.drawable.after_cookie);
        TextView text = (TextView) findViewById(R.id.status_text_view);
        text.setText("i'm so full");

        // TODO: Find a reference to the TextView in the layout. Change the text.

    }