简体   繁体   English

无法在同一个类中访问字符串

[英]String not accessible in same class

I have code to show a toast: 我有显示敬酒的代码:

public void checkchallenge(View v) {
        String algo = null;
        if(algo == "123")
        {

Context context = getApplicationContext();
    CharSequence text = "You have " + messages ;
    int duration = Toast.LENGTH_SHORT;

    Toast toast = Toast.makeText(context, text, duration);
    toast.show();
...

the error in eclipse that I am getting is: 我得到的日食中的错误是:

messages cannot be resolved to a variable 消息无法解析为变量

The variable "messages" is being called in some code above it: 变量“ messages”在其上方的一些代码中被调用:

String messages = c.getString(TAG_MESSAGES);
final TextView messages1 = (TextView)findViewById(R.id.envelope);

Maybe it's because I don't know Java too well but why isn't my string variable "messages" or "messages1" getting recognized in my code? 可能是因为我不太了解Java,但是为什么我的代码中没有识别出字符串变量“ messages”或“ messages1”呢? I have a feeling it has to do with permissions of the code but when I remove the "final" part off of the messages 1 TextView I get the same error. 我有一种感觉,它与代码的权限有关,但是当我从消息1 TextView中删除“最终”部分时,我得到了相同的错误。

Confused! 困惑!

Here is the entire code to the class:

public class Homepage extends Activity {






    //URL to get JSON Arrays
   public static String url = "http://10.0.2.2/android/SQL.php?username='";
   public static String usernamefromlogin;
   public static TextView errorchecking; 

    //JSON Node Names 
    private static final String TAG_USER = "users";
    private static final String TAG_WINS = "wins";
    private static final String TAG_MESSAGES = "messages";
    private static final String TAG_NAME = "fullname";
    private static final String TAG_DISPLAY = "displayname";
    private static final String TAG_EMAIL = "email";
    private static final String TAG_PW = "password";
    private static final String TAG_CREATED = "created_at";
    private static final String TAG_UPDATED = "updated_at";


    JSONArray user = null;

    //disable back button
    @Override
    public void onBackPressed() {

    }


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


        //Get login name from EditText in login screen and concatenate it to PHP user-name for _GET command in 3 steps.
        //Step 1: Get intent from previous activity
        Intent intent = getIntent();
        getIntent().getExtras();




        //Step 2: convert intent (intent) to string called "usernamefromlogin"     //error checking in log cat to see value of "usernamefromlogin"      
       usernamefromlogin = intent.getExtras().getString("username2");      Log.d("log of usernamefromlogin", usernamefromlogin);

        //Step 3: take the string "url" and add string "usernamefromlogin" after it
       String url5 = url.concat(usernamefromlogin);
       String url6 = url5.concat("'");
        //find TextView "errorchecking" and send the string "url6" to it so it can display in log cat
       Log.d("log of URL6 in it's final state", url6);







        // Creating new JSON Parser
        JSONParser jParser = new JSONParser();

        // Getting JSON from URL from the final string "url6"
        JSONObject json = jParser.getJSONFromUrl(url6);
        //Logcat check value for TAG_USER



        try {
            // Getting JSON Array

            user = json.getJSONArray(TAG_USER);
            JSONObject c = user.getJSONObject(0);






            // Storing  JSON item in a String Variable

            String name = c.getString(TAG_NAME);
            String messages = c.getString(TAG_MESSAGES);
            String wins = c.getString(TAG_WINS);
            String display = c.getString(TAG_DISPLAY);
            String email = c.getString(TAG_EMAIL);
            String pw = c.getString(TAG_PW);
            String created = c.getString(TAG_CREATED);
            String updated = c.getString(TAG_UPDATED);



            //Importing TextView

            final TextView name1 = (TextView)findViewById(R.id.tvfullname);
             TextView messages1 = (TextView)findViewById(R.id.envelope);
            final TextView wins1 = (TextView)findViewById(R.id.wins);
            final TextView created1 = (TextView)findViewById(R.id.tvcreated_at);
            final TextView updated1 = (TextView)findViewById(R.id.tvupdated_at);




            //Set JSON Data in its respectable TextView

      name1.setText("Hello " + name);





      updated1.setText("Your last login was " + updated);






 // print error if applicable.
    } catch (JSONException e) {
        e.printStackTrace();
    }

    }

    public void checkchallenge(View v) {
        String algo = null;
        if(algo == "123")
        {


              // display pop up message (toast)
            Context context = getApplicationContext();
            CharSequence text = "You have " + messages1 ;
            int duration = Toast.LENGTH_SHORT;

            Toast toast = Toast.makeText(context, text, duration);
            toast.show();


        }else
        {
        // display pop up message (toast)
            Context context = getApplicationContext();
            CharSequence text = "You have no new Challenges";
            int duration = Toast.LENGTH_SHORT;

            Toast toast = Toast.makeText(context, text, duration);
            toast.show();

        }
    }



}

I suspect the code is making the String messages and TextView local variables inside a method. 我怀疑代码在方法内部制作了String消息和TextView局部变量。 If you want to access these objects within the entire class they should be declared as fields. 如果要在整个类中访问这些对象,则应将它们声明为字段。

public SomeClass{
    String messages;
    final TextView messages1;

    public void checkchallenge(View v) {
        //Method implementation
    }

    public void someOtherMethod(){
        this.messages = c.getString(TAG_MESSAGES);
        this.messages1 = (TextView)findViewById(R.id.envelope);
    }
}

如果您的message变量是在其他方法中定义的,则在您显示的位置将看不到它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM