gpt4 book ai didi

java - Android 中的计数器出现错误

转载 作者:行者123 更新时间:2023-12-01 10:41:24 24 4
gpt4 key购买 nike

以下是我的代码。我需要获取 FloatingActionButton 中的增量值。我已经写好了代码。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="database.fab.MainActivity">

<ListView
android:id="@+id/lvListView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/rel1" >

<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rlRelativeLayout"
android:layout_margin="16dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" >

<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="65dp"
android:layout_height="65dp"
android:layout_gravity="bottom|end"
android:src="@mipmap/cart_main"
android:clickable="true"
android:scaleType="fitXY"
android:onClick="fab" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/null_value_zero"
android:id="@+id/fab_text"
android:textColor="#42b138"
android:layout_marginTop="23dp"
android:layout_centerHorizontal="true"
android:textStyle="bold"
android:textSize="17sp"
android:elevation="7dp" />

</RelativeLayout>

</RelativeLayout>

</RelativeLayout>

custom_listview.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_margin="16dp"
android:background="#FFFFFF"
android:layout_width="match_parent"
android:layout_height="match_parent">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="140dp">

<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginStart="20dp"
android:layout_marginLeft="20dp"
android:layout_centerVertical="true"
android:id="@+id/ivImageViewMain"/>

<ImageView
android:layout_width="120dp"
android:layout_height="80dp"
android:id="@+id/CounterImage"
android:src="@mipmap/main_add"
android:layout_marginRight="20dp"
android:layout_marginEnd="20dp"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"/>

</RelativeLayout>

</RelativeLayout>

MainActivity.java

package database.fab;

import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

ListView lvListView;
ImageView CounterImage;
TextView fab_text;
Adapter adapter;
int counter = 0;

int[] images_item = {
R.mipmap.apple,
R.mipmap.blackberry,
R.mipmap.cherry,
R.mipmap.coconut,
R.mipmap.grapes,
R.mipmap.orange,
R.mipmap.peach,
R.mipmap.pineapple,
R.mipmap.pomegranate,
R.mipmap.banana
};

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

lvListView = (ListView) findViewById(R.id.lvListView);
fab_text = (TextView) findViewById(R.id.fab_text);

ImageView imageView= (ImageView) findViewById(R.id.CounterImage);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
counter++;
fab_text.setText(String.valueOf(counter));
}
});

adapter = new Adapter(getApplicationContext(), R.layout.custom_listview);
lvListView.setAdapter(adapter);
int i = 0;
for (int Image : images_item){
Helper helper = new Helper(images_item[i]);
adapter.add(helper);
i++;
}

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);

}
}

适配器.java

package database.fab;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;

import java.util.ArrayList;
import java.util.List;

public class Adapter extends ArrayAdapter {

List arrayList = new ArrayList();

public Adapter(Context context, int resource) {
super(context, resource);
}

int counter;

public void add(Helper object) {
super.add(object);
arrayList.add(object);
}

static class ImageHolder{
ImageView img_item;
}

@Override
public int getCount() {
return this.arrayList.size();
}

@Override
public Object getItem(int position) {
return this.arrayList.get(position);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
view = convertView;
ImageHolder imageHolder;

if (convertView == null) {

LayoutInflater layoutInflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = layoutInflater.inflate(R.layout.custom_listview, parent, false);
imageHolder = new ImageHolder();
imageHolder.img_item = (ImageView) view.findViewById(R.id.ivImageViewMain);

view.setTag(imageHolder);
}
else {
imageHolder = (ImageHolder) view.getTag();
}

Helper h;
h = (Helper) this.getItem(position);
imageHolder.img_item.setImageResource(h.getImage_item());

return (view);
}
}

Helper.java

package database.fab;

public class Helper {

private int image_item;

public Helper(int image_item) {
this.image_item = image_item;
}

public int getImage_item() {
return image_item;
}

public void setImage_item(int image_item) {
this.image_item = image_item;
}
}

错误

12-21 13:01:00.535 13336-13336/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: database.fab, PID: 13336
java.lang.RuntimeException: Unable to start activity ComponentInfo{database.fab/database.fab.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2308)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2368)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1285)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5233)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at database.fab.MainActivity.onCreate(MainActivity.java:42)
at android.app.Activity.performCreate(Activity.java:6001)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2368) 
at android.app.ActivityThread.access$800(ActivityThread.java:144) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1285) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5233) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693) 

我需要在按下添加图像后获取 FloatingActionButton 中的增量值。不知道我哪里错了。请在这件事上给予我帮助。提前致谢。

最佳答案

更新:恢复这个,我错过了第二个 ImageView - sry

更改此:

ImageView imageView= (ImageView) findViewById(R.id.CounterImage);

至:

ImageView imageView= (ImageView) findViewById(R.id.ivImageViewMain);
<小时/>

更新:

在您的主要 Activity 中,您将 View 设置为activity_main.xml:

setContentView(R.layout.activity_main);

然后您尝试使用 ID CounterImage 获取 View :

ImageView imageView = (ImageView) findViewById(R.id.CounterImage)

activity_main.xml 中不存在

<小时/>

更新2:

您应该了解一些 Java 和 Android 基础知识。

int i = 0;
for (int Image : images_item){
Helper helper = new Helper(images_item[i]);
adapter.add(helper);
i++;
}

您在这里混合了两个 for 循环。

这个:

for(int image : images_item) {
adapter.add(new Helper(image));
}

将是做同样事情的更好方法。

<小时/>

更新3:

您正在 Adapter.java 中扩展正确的布局:

view = layoutInflater.inflate(R.layout.custom_listview, parent, false);

您可以在此处添加一个 OnClickListener:

ImageView imageView= (ImageView) view.findViewById(R.id.CounterImage);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
counter++;
fab_text.setText(String.valueOf(counter));
}
});

不要忘记从 Activity 中删除错误代码。

关于java - Android 中的计数器出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34391427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com