三个按钮,三种不同 actions/outputs
Three buttons, three different actions/outputs
这是我第一次 post 来这里,我对编程还很陌生。我有这个任务,我们应该有三个不同的按钮来做三件不同的事情。
第一个按钮可以满足我的要求。即改正文。
第二个按钮应该打开一个新的 activity,它应该是一张图片。 (我以前完成过这个作业并且成功了,但是当与其他东西一起使用时它不起作用。)
第三个按钮应该打开一个新的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 
 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 
 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;
}
}
}
这是我第一次 post 来这里,我对编程还很陌生。我有这个任务,我们应该有三个不同的按钮来做三件不同的事情。
第一个按钮可以满足我的要求。即改正文。
第二个按钮应该打开一个新的 activity,它应该是一张图片。 (我以前完成过这个作业并且成功了,但是当与其他东西一起使用时它不起作用。)
第三个按钮应该打开一个新的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 
 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 
 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;
}
}
}