三个按钮,三种不同 actions/outputs

Three buttons, three different actions/outputs

这是我第一次 post 来这里,我对编程还很陌生。我有这个任务,我们应该有三个不同的按钮来做三件不同的事情。

  1. 第一个按钮可以满足我的要求。即改正文。

  2. 第二个按钮应该打开一个新的 activity,它应该是一张图片。 (我以前完成过这个作业并且成功了,但是当与其他东西一起使用时它不起作用。)

  3. 第三个按钮应该打开一个新的activity,并且应该有一个包含 6 张图片的网格视图。

这里是第一个XML文件和java文件。经过几次尝试,这是最简单的(我认为)开始的方法,只需确保我能够按下按钮并打开下一个 activity(在按钮 2 和 3 上)。如您所见,有很多尝试,不想删除任何内容,因为我不确定自己在做什么。所以这是不同尝试的组合...... 谢谢!

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#eee"
tools:context=".MainActivity">


<Button
    android:id="@+id/text_edit"
    android:layout_width="150dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="72dp"
    android:background="#005622"
    android:text="Change text"
    android:textColor="#FFFFFF"
    android:textSize="24dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.498"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/text_edit2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="16dp"
    android:padding="15dp"
    android:text="När du klickar på den här knappen &#xA; så kommer dess text att bytas ut."
    android:textAlignment="center"
    android:textSize="15sp"
    android:textStyle="bold"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/text_edit" />


<Button
    android:id="@+id/activity2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="28dp"
    android:background="#ffff00"
    android:text="Naturens underverk"
    android:textSize="45dp"
    android:textStyle="bold"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/text_edit2" />

<TextView
    android:id="@+id/activitytext2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="16dp"
    android:padding="15dp"
    android:text="Klicka här så får du &#xA; se något väldigt vackert."
    android:textAlignment="center"
    android:textSize="15sp"
    android:textStyle="bold"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.497"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/activity2" />

<Button
    android:id="@+id/activity3"
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="18dp"
    android:background="#ff3111"
    android:text="Till sida 2"
    android:textSize="30dp"
    android:textStyle="italic"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.502"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/activitytext2" />

<TextView
    android:id="@+id/activitytext3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="16dp"
    android:padding="15dp"
    android:text="Feelings..."
    android:textAlignment="center"
    android:textSize="15sp"
    android:textStyle="bold"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.501"
    app:layout_constraintStart_toStartOf="parent"

    app:layout_constraintTop_toBottomOf="@+id/activity3" />

<androidx.constraintlayout.widget.Group
    android:id="@+id/group"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<androidx.constraintlayout.widget.Guideline
    android:id="@+id/guideline"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:layout_constraintGuide_begin="20dp" />

<androidx.constraintlayout.widget.Guideline
    android:id="@+id/guideline2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    app:layout_constraintGuide_begin="20dp" />

<androidx.constraintlayout.widget.Barrier
    android:id="@+id/barrier"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:barrierDirection="left" />

<androidx.constraintlayout.widget.Barrier
    android:id="@+id/barrier2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:barrierDirection="top" />

<!--<Fragment
    android:id="@+id/fragment2"
    android:name=".com.example.lab2.mainactivity"
    android:layout_width="match-parent"
    android:layout_height="match-parent"
    />

<Fragment
    android:id="@+id/fragment1"
    android:name=".com.example.lab2.mainactivity"
    android:layout_width="match-parent"
    android:layout_height="match-parent"
    />
-->
</androidx.constraintlayout.widget.ConstraintLayout>



enter code here
package com.example.lab2;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.app.Activity;
import android.service.autofill.OnClickAction;
import android.view.View;
import android.widget.Button;
import android.widget.GridView;
import android.widget.TextView;

import java.util.ArrayList;
//Jag har så fruktansvärt många olika varianter jag testat nu så vill bara börja om...

public class MainActivity extends Activity implements View.OnClickListener {

 //   private Bundle savedInstanceState;

 /*    @Override
 protected void onCreate(Bundle savedInstanceState) {
    this.savedInstanceState = savedInstanceState;
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);*/

//När användaren trycker på knappen change text så sker detta under.

Button text_edit = findViewById(R.id.text_edit);
TextView text = findViewById(R.id.text_edit2);
Button activity2 = findViewById(R.id.activity2);
TextView activitytext2 = findViewById(R.id.activitytext2);
Button activity3 = findViewById(R.id.activity3);
TextView activitytext3 = findViewById(R.id.activitytext3);

text_edit.setOnClickListener(this):
activity2.setOnClickListener(this);
activity3.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
    case R.id.text_edit:
        text.setText("Kolla, kolla vad hon kan!");
        break;

    case R.id.activity2:
        openactivity2() {
        activity2.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick (View v) {
                openactivity2();
            }
        });
    }
    public void openactivity2() {
        Intent intent1 = new Intent(this, Activity2.class);
        startActivity(intent1);
    }
        break;

    case R.id.activity3:
        openactivity3() {
        activity3.setOnClickListener(new View.onClickListener() {
            @Override
            public void onClick(View v) {
                openactivity3();
            }
        });
    }
    public void openactivity3() {
        Intent intent2 = new Intent(this, Activity3.class);
        startActivity(intent2);
        }

        break;
    }
  }


  /* private Bundle savedInstanceState;
//En del av mig vill skriva in en if-sats och länka till andra classer,
//det borde gå att sätta flera knappar på samma sida då de gör olika saker.
//Dock väldigt lång?

@Override
protected void onCreate(Bundle savedInstanceState) {
    this.savedInstanceState = savedInstanceState;
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

        text = (TextView) findViewById(R.id.text_edit);
        text_edit = (Button) findViewById(R.id.text_edit);

        text_edit.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                text.setText("Kolla, kolla vad hon kan!");
            }
        });

  }
}*/
/*public void opentext_edit() { 
//Är detta för att du ville ha upp en toast när du klickade in dig?
    opentext_edit();

    Intent intent = new Intent(this, toast_activity.class);
    startActivity(intent); //behöver kanske alla intents ha olika namn?
}


private Button activity2; vill inte radera något för tidigt så kommenterar ut de i
säkerhetsskull


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    activity2 = (Button) findViewById(R.id.activity2);
    activity2.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick (View v) {
        openactivity2();
    }
    });
 }
 public void openactivity2() {
    Intent intent = new Intent(this, Activity2.class);
    startActivity(intent);
 }


private Button activity3;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    activity3 = (Button) findViewById(R.id.activity3);
    activity3.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick (View v) {
            openactivity3();
        }
    });
 }
 public void openactivity3() {
    Intent intent = new Intent(this, Activity3.class);
    startActivity(intent);
  }

  //Här nedanför sker... detta sker när vi trycker på tredje knappen?

 private GridView gridView;
  private GridViewAdapter gridViewAdapter;

@Override
protected void onCreate(Bundle saveInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    gridView = (GridView) findViewById(R.id.gridView);
    gridAdapter = new GridViewAdapter(this , R.layout.grid_item_layout, getData());
    gridView.setAdapter(gridAdapter);

  }
  private ArrayList<ImageItem> getData(){
    final ArrayList<ImageItem> imageItems = new ArrayList<>();
    TypedArray imgs = getResources(), obtainTypedArray(R.array.image_ids);

    for (int i = 0; i < imgs.length(); i++) {
        Bitmap bitmap = BitmapFactory.decodeResource(getResource(), 
imgs.getResourceId(I, -1));

    }
    return imageItems;
} */

你几乎搞定了,你只是有一些基本的错误,我添加了评论来帮助你理解发生了什么:

public class MainActivity extends Activity implements View.OnClickListener {
    //Declare views
    //You first have to declare your views (Button, TextView, EditText etc)
    Button text_edit, activity2, activity3;
    TextView text, activitytext2, activitytext3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);

        //Initialize views
        //You don't have to create a method when initializing your views
        //but it keeps your code in order
        initViews();

        //Set onclick listeners
        //Declare your click listeners and pass it the context of you activity "this"
        text_edit.setOnClickListener(this);
        activity2.setOnClickListener(this);
        activity3.setOnClickListener(this);
    }

    private void initViews() {
        text_edit = findViewById(R.id.text_edit);
        text = findViewById(R.id.text_edit2);
        activity2 = findViewById(R.id.activity2);
        activitytext2 = findViewById(R.id.activitytext2);
        activity3 = findViewById(R.id.activity3);
        activitytext3 = findViewById(R.id.activitytext3);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.text_edit:
                //Set text to TextView
                text.setText("Kolla, kolla vad hon kan!");
                break;
            case R.id.activity2:
                //Start Activity2
                Intent intent1 = new Intent(this, Activity2.class);
                startActivity(intent1);
                break;
            case R.id.activity3:
                //Start Activity3
                Intent intent2 = new Intent(this, Activity3.class);
                startActivity(intent2);
                break;
        }
    }
 }