在仿真器上打印

时间:2013-03-14 17:54:39

标签: java android android-emulator console

我是android的新手。我正在开发一个项目,我需要在Android手机上提供方向信息。所以,我必须在我的Android屏幕上看到定向消息。我在普通的java中编写了代码并编译,在命令提示下执行。我能够看到我在代码中给出的print语句的输出。所以,我创建了一个新的android项目,然后创建了另一个类并在那里粘贴了我的代码。令我惊讶的是,我在仿真器屏幕上找不到打印语句。而且,当我昨晚尝试做同样的事情时,我能够在eclipse的控制台窗口看到打印语句。但我现在看不到同样的情况。你能解释一下如何让我的打印语句出现在模拟器屏幕上。同时,请告诉我为什么我能在eclipse的控制台窗口看到那些打印语句,我该怎么做才能复制它?我只能在模拟器屏幕上看到Hello World。

以下是一段代码:

`package com.example.visual;

import org.json.JSONObject;
import org.restlet.data.ChallengeScheme;
import org.restlet.ext.json.JsonRepresentation;
import org.restlet.resource.ClientResource;
import android.widget.Toast;
import android.app.Activity;

public class ItsClient4 extends Activity {

private final static String BASE_URL = "my website url";
private final static String SITE_ID = "67";// Your site ID here
private final static String STATION_MAC[] = {"mac1","mac2"};// The station's MAC address
private final static String NODES[] = {"mac3","mac4","mac5","mac6","mac7","mac8"};
private final static String USERNAME = "usrname";// Your username
private final static String PASSWORD = "pwd";// Your password
public static void main(String[] args) throws Exception {
// Set the request parameters
while(true){
double c[]=new double[6];
double d[]=new double[6];
String url[] =new String[2];
ClientResource itsClient[] = new ClientResource[2];
JsonRepresentation jsonRep[] = new JsonRepresentation[2];
for(int i=0;i<=0;i++){

url[i] = BASE_URL + "sites/" + SITE_ID + "/stations/"+ STATION_MAC[i] + "/";

itsClient[i] = new ClientResource(url[i]);
                 itsClient[i].setChallengeResponse(ChallengeScheme.HTTP_BASIC, USERNAME, PASSWORD);
// Retrieve and parse the JSON representation
jsonRep[i] = new JsonRepresentation(itsClient[i].get());
JSONObject jsonObj = jsonRep[i].getJsonObject();
// Output results

c[i]=jsonObj.getJSONObject("loc").getDouble("lat");
d[i]=jsonObj.getJSONObject("loc").getDouble("lng");

Toast.makeText(ItsClient4.this,"text",20000).show();
//Toast.makeText(ItsClient4.this, "Hello", Toast.LENGTH_LONG).show();
System.out.println(c[i] +" "+d[i]);
if(d[i]>78.142182){
System.out.println("near E8");
}
}


}
}
}

`

请检查上面的代码,请帮助我如何使用Toast。它仍然给我错误“不能在静态上下文中使用它”。在我的软件包“visual”中,在src目录中,com.example.visual有两个子目录。一个是MainActivity.java,另一个是ItsClient4.java。 MainActivity.java是自动创建的。我通过在com.example.visual目录中添加一个新类来创建ItsClient4.java。请告诉我如何克服上述错误。

我不能在主功能中使用Toast吗?

4 个答案:

答案 0 :(得分:1)

  

请解释如何让我的打印语句出现在模拟器屏幕上。

使用Toast在模拟器上显示文字。

Toast.makeText(this, "text", Toast.LENGH_LONG).show();

您应该使用logcat之类的

Log.v("app","text"); and see this in logcat

这也是调试的更好选择。

答案 1 :(得分:0)

用于打印,您可以使用Toast exanple:

Toast.makeText(MainActivity.this, "Hello", Toast.LENGTH_LONG).show();

答案 2 :(得分:0)

就像TGMCians所说的那样,Toast可以解决问题。

如果您想将其写入LogCat,则可以使用

Log.i(tag, message)

然后,您可以通过转到Window&gt;在Eclipse中的LogCat中查看此内容。显示视图&gt;其他&gt; Android&gt; logcat的

答案 3 :(得分:0)

有很多方法可以获得有关Android的反馈。

解决方案1:

仅在屏幕上显示反馈的活动。 像以下代码一样更改您的创建:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Create a string with text
    String message = "the text you want to show";

    // here you can write / change your 'message' to 
    //         whatever you want to display on screen...

    // Create the text view
    TextView textView = new TextView(this);
    textView.setTextSize(40);

    // enable textView to scroll to for long text to be visible
    textView.setMovementMethod(new ScrollingMovementMethod()); 

    // add the text to the textview
    textView.setText(message); 

    // Set the text view as the activity layout
    setContentView(textView);
}

解决方案2:

Toast messages持续排序时间段,并在屏幕底部(默认情况下)弹出:

Toast.makeText(context, text, duration).show();
  • context:this如果代码在Activity类
  • text:通常是一个字符串
  • 持续时间:Toast.LENGTH_SHORTToast.LENGTH_LONG

解决方案3:

日志消息。 它类似于java代码System.out.println("a message");这个代码虽然它起作用,但它看起来并不常见。相反,我们使用android native Log class

Log.v(TAG, "your message here" + and_some_other_variable);
  • TAG:一个字符串,以便更容易找到日志,可用于过滤。

有关调试日志here的更多信息。