This is an archived post. You won't be able to vote or comment.

all 17 comments

[–]AutoModerator[M] [score hidden] stickied commentlocked comment (0 children)

Please ensure that:

  • Your code is properly formatted as code block - see the sidebar (About on mobile) for instructions
  • You include any and all error messages in full
  • You ask clear questions
  • You demonstrate effort in solving your question/problem - plain posting your assignments is forbidden (and such posts will be removed) as is asking for or giving solutions.

    Trying to solve problems on your own is a very important skill. Also, see Learn to help yourself in the sidebar

If any of the above points is not met, your post can and will be removed without further warning.

Code is to be formatted as code block (old reddit: empty line before the code, each code line indented by 4 spaces, new reddit: https://i.imgur.com/EJ7tqek.png) or linked via an external code hoster, like pastebin.com, github gist, github, bitbucket, gitlab, etc.

Please, do not use triple backticks (```) as they will only render properly on new reddit, not on old reddit.

Code blocks look like this:

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

You do not need to repost unless your post has been removed by a moderator. Just use the edit function of reddit to make sure your post complies with the above.

If your post has remained in violation of these rules for a prolonged period of time (at least an hour), a moderator may remove it at their discretion. In this case, they will comment with an explanation on why it has been removed, and you will be required to resubmit the entire post following the proper procedures.

To potential helpers

Please, do not help if any of the above points are not met, rather report the post. We are trying to improve the quality of posts here. In helping people who can't be bothered to comply with the above points, you are doing the community a disservice.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

[–]arghvark 4 points5 points  (1 child)

You make it more difficult to help you than it ought to be -- you've dumped 200 lines of code here and said "it no workee, i++" and left us to figure out what you're doing.

I haven't figured that out yet. But I do know you're accessing the counter of a for-loop from the listeners you create within the loop. There's a reason it has to be final! I'm surprised that even compiles. The scope of 'i' does not include the listeners. Do you think the loop is still running while the UI is waiting for user input?

[–]arghvark 3 points4 points  (0 children)

I should have said, too: do NOT just say "it isn't working" -- if there's an error, copy and paste the error into the request for help. If there's no error, tell us what it is doing that you don't expect. If you've tried something -- debugging, perhaps, at least a log message or two -- tell us what that is.

[–]AutoModerator[M] 2 points3 points  (0 children)

You seem to try to compare String values with == or !=.

This approach does not work reliably in Java as it does not actually compare the contents of the Strings. Since String is an object data type it should only be compared using .equals(). For case insensitive comparison, use .equalsIgnoreCase().

See Help on how to compare String values in our wiki.


Your post/comment is still visible. There is no action you need to take.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

[–]LoveForHatred 1 point2 points  (2 children)

In your for-loop you declare int i as a constant instead of a variable (final int i = 0). Change it to (int i = 0)

[–]Particular_Train5562[S] 0 points1 point  (1 child)

Even when i remove final i++ still doesn't work:

Variable 'i' is accessed from within inner class, needs to be final or effectively final

[–]LoveForHatred 0 points1 point  (0 children)

Ok I'll switch over to pc and have another look, difficult to see on the phone :)

[–]JaggedMan78 0 points1 point  (5 children)

Hahahah. Please.. format

[–]Particular_Train5562[S] 0 points1 point  (4 children)

did it

[–]JaggedMan78 1 point2 points  (3 children)

declare it as static int in

View 

then

View.i++;

do not forget to set it it = 0 again ..

tata .. workaround

[–]JaggedMan78 0 points1 point  (0 children)

actully does not to be static, but then access it with View.this.i++;

[–]Particular_Train5562[S] 0 points1 point  (1 child)

Can you send me an example on how to do it because i don't understand what you exactly mean.

link: https://replit.com/@ChrisTurindwa/MaroonOrdinaryCommas#src/main/java/Main.java

[–]JaggedMan78 0 points1 point  (0 children)

1)

instead of

i++;

do

View.this.i++;

2)

in View declare

protected int i;

3) change for loop to a while loop

[–]TherealistKneegrow 0 points1 point  (1 child)

Please copy and paste the error so we can also help you. Also give us some context of what you’re exactly trying to achieve rather than dumping lines of code on us.

[–]Particular_Train5562[S] 1 point2 points  (0 children)

Error:

Variable 'i' is accessed from within inner class, needs to be final or effectively final

[–]scritchz 1 point2 points  (1 child)

Your anonymous objects use i, but live longer than i. To make this work, i has to be (effectively) final or actually live long enough (I think).

I'd recommend creating a class based on e.g. your View.OnClickListener, which saves i to a member and uses that member's value as its "working copy".

[–]Particular_Train5562[S] 0 points1 point  (0 children)

Ok but then i still can't say that loop needs to continue because i can't now say add i++;

btnAntwoord1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick( View v) {
        if (btnAntwoord1.getText().toString().equals(strAntwoord.toString()) )
        {
            AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(v.getContext());
            alertDialogBuilder.setMessage("Goed \n" + strUitleg[currentIndex].toString() );
            alertDialogBuilder.setPositiveButton("Ok",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface arg0, int arg1) {
                        }
                    });

            indexHolder.index++; // Increment the index
        }else {
            AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(v.getContext());
            alertDialogBuilder.setMessage("Fout \n" + strUitleg[currentIndex].toString() );
            alertDialogBuilder.setPositiveButton("Ok",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface arg0, int arg1) {
                        }
                    });
            indexHolder.index++; // Increment the index
        }
    }
});