Как передать пакет в RemoteView в Android? - PullRequest
0 голосов
/ 05 ноября 2010

Me Doing "edu.sju.BlackJack" не вызывает обновления, которые позже вызываются. Я правильно ссылаюсь на макет, и вызовы, которые должны его обновить, верны, так что я могу указать для имени пакета?

Я должен добавить, что мое имя пакета в соответствии с манифестом выше. Это код, который у меня сейчас есть, который в настоящее время не обновляет экран (или я предполагаю, что измените значение правильно).

Имя RemoteViews = новые RemoteViews ("edu.sju.BlackJack", R.layout.play_screen);

Если это не так ... будет ли тогда этот код?

name.setTextViewText (R.id.Dealer_Total, "0");

Dealer_Total - это идентификатор TextView, который я хочу изменить ... однако опять-таки Изменение не происходит.

Заранее благодарим за любую помощь.

Вот весь мой код, о котором я говорю, сначала Playscreen.java

package edu.sju.BlackJack;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.widget.ImageView;
import android.widget.RemoteViews;
import android.widget.TextView;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import java.util.*;


public class PlayScreen extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    GameEngine Engine = new GameEngine();
     @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.play_screen);
        TextView TextDealer =  (TextView)findViewById(R.id.Dealer_Total); 
        Engine.setView(TextDealer);
        //Set up click listeners for all the buttons
        View hitButton = findViewById(R.id.hit_button);
        hitButton.setOnClickListener(this);
        View standButton = findViewById(R.id.stand_button);
        standButton.setOnClickListener(this);
        //new preplay button (ML 10/24/10)
        View prePlayButton = findViewById(R.id.prePlay_button);
        prePlayButton.setOnClickListener(this);
        Thread thread = new Thread(Engine);
        thread.start();


    }   

    public void onClick(View v) {
        switch (v.getId()) {

            case R.id.prePlay_button:
                v.setVisibility(View.GONE);
                System.out.println("Working?");
                Engine.setGameStart(1);
                break;
            case R.id.hit_button:
                Engine.gameHit(1);
                break;
            case R.id.stand_button:
                Engine.gameStand(1);
                break;
        }

            // More buttons go here (if any) ...    
        }
}

Теперь вот тема GameEngine Не все, достаточно, чтобы вы поняли


package edu.sju.BlackJack;

import java.util.Random;

import android.widget.RemoteViews;
import android.widget.TextView;

public class GameEngine   implements Runnable {
    static int playerCount = 0;    //keep record of which cards to change for player when hit is selected
    static int dealerCount = 0;    //keep record of which cards to change for dealer when dealer hits
    static int win = 0;     //keeps record of wins  (JV 10/01/10)
    static int lose = 0;    //keeps record of loss  (JV 10/01/10)
    static int hit = 0;     //let's engine know if hit button was selected (0 means it has not)
    static int stand = 0;    //let's engine know if stand button was selected (0 means it has not)
    static int playerTotal = 0; //tells player's total (JV 10/01/10)
    static int dealerTotal = 0; //tells dealer's total (JV 10/01/10)
    static int playerTurn = 0;  //activates buttons so that they do actions when clicked (as it's players turn)
    static int startGame = 0; //starts the game when the start game button is pressed
    TextView TextDealer;
    RemoteViews name = new RemoteViews("edu.sju.BlackJack", R.layout.play_screen);


public void run() {
    name.setTextViewText(R.id.Dealer_Total, "0");
    //main();
}

public void setView(TextView a)
{
TextDealer = a;
}

public void setGameStart(int i)
{
    startGame = i;
}

public void gameHit(int i)
{
    if(playerTurn == 1)
    hit = 1;
}

public void gameStand(int i)
{
    if(playerTurn == 1)
    stand = 1;
}


public void main()

    {//Start Game
        Deck mainDeck = new Deck();
        fillDeck(mainDeck);

        //TextView TextPlayer =  (TextView)findViewById(R.id.Player_Total); 
        //TextDealer.setText("" + dealerTotal);
        //TextPlayer.setText("" + playerTotal);

        while(true)
        {
            if(startGame == 1)
            {

                if(mainDeck.getList().size() < 15){
                    mainDeck = emptyDeck();
                    fillDeck(mainDeck);
                    }  

                //RESET CARD VIEWS TO DEFAULT
                //RESET DEALERCARD AND PLAYERCARD TOTALS TO 0
                dealerTotal = 0;
                playerTotal = 0;
                playerCount = 0;
                dealerCount = 0;

                //playHand(mainDeck);

            }
        }

    }

1 Ответ

1 голос
/ 05 ноября 2010

Какова бы ни была ваша проблема, я не думаю, что это то, что вы думаете.Если ваш макет отображается в виджете приложения, то имя пакета обрабатывается правильно.Если обновление (ваш setTextViewText() вызов) не дает эффекта, то либо R.layout.play_screen не имеет R.id.Dealer_Total, либо вы не отправляете более RemoteViews, который содержит setTextViewText() инструкции.

...