Android Google Analytics (R.id) 重命名按钮
Button createEventButton = (Button)findViewById(R.id.NewEventButton);
Button createPageButton = (Button)findViewById(R.id.NewPageButton);
你好 我已经搜索遍了,但我不明白。我应该将“NewEventButton”更改为“button01”之类的内容吗? 问题是,如果我更改它,按钮就会停止工作,正常情况下,单击按钮时会打开手机浏览器并导航到网站。
同样的情况也发生在“NewPageButton”上,例如 Eclipse 也要求更改为“button01”。
如果我将它们保留原样,则会出现“无法成为解析器或不是字段”之类的错误,
提前致谢
更新 这是主要的 xml 文件,
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/aevbackground"
android:id="@+id/main"
>
<Button android:text="Other" android:id="@+id/button9" android:layout_width="wrap_content" android:layout_height="33dp"
android:onClick="myonclick1" android:layout_gravity="bottom|right"></Button>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello1"
/>
<Button android:text="Home" android:id="@+id/button01" android:layout_width="230dp" android:layout_height="34dp"
android:onClick="openBrowser1"></Button>
<Button android:text="Forum" android:id="@+id/button2" android:layout_width="210dp" android:layout_height="34dp"
android:onClick="openBrowser2"></Button>
<Button android:text="FOC" android:id="@+id/button3" android:layout_width="190dp" android:layout_height="34dp"
android:onClick="openBrowser3"></Button>
<Button android:text="ON TFC" android:id="@+id/button4" android:layout_width="170dp" android:layout_height="34dp"
android:onClick="openBrowser4"></Button>
<Button android:text="At Facebook" android:id="@+id/button5" android:layout_width="150dp" android:layout_height="34dp"
android:onClick="openBrowser5"></Button>
<Button android:text="At Twitter" android:id="@+id/button6" android:layout_width="130dp" android:layout_height="34dp"
android:onClick="openBrowser6"></Button>
<Button android:text="At Google+" android:id="@+id/button7" android:layout_width="110dp" android:layout_height="34dp"
android:onClick="openBrowser7"></Button>
<Button android:text="@string/linkEmail" android:id="@+id/button8" android:layout_width="90dp" android:layout_height="34dp"
android:onClick="linkEmailClicked"></Button>
</LinearLayout>
</FrameLayout>
这是带有 Google Analytics 的主要 java 文件
package com.av0001;
import com.google.android.apps.analytics.GoogleAnalyticsTracker;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class Main extends Activity {
/** Called when the activity is first created. */
GoogleAnalyticsTracker tracker;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tracker = GoogleAnalyticsTracker.getInstance();
// Start the tracker in manual dispatch mode...
tracker.startNewSession("UA-25624837-1", this);
setContentView(R.layout.main);
Button createEventButton = (Button)findViewById(R.id.button01);
createEventButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
tracker.trackEvent(
"Clicks", // Category
"Button", // Action
"clicked", // Label
77); // Value
}
});
Button createPageButton = (Button)findViewById(R.id.button01);
createPageButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Add a Custom Variable to this pageview, with name of "Medium" and value "MobileApp" and
// scope of session-level.
tracker.setCustomVar(1, "Navigation Type", "Button click", 2);
// Track a page view. This is probably the best way to track which parts of your application
// are being used.
// E.g.
// tracker.trackPageView("/help"); to track someone looking at the help screen.
// tracker.trackPageView("/level2"); to track someone reaching level 2 in a game.
// tracker.trackPageView("/uploadScreen"); to track someone using an upload screen.
tracker.trackPageView("/mainspalsh");
tracker.trackPageView("/main");
tracker.trackPageView("/main2");
tracker.trackPageView("/main3");
}
});
Button quitButton = (Button)findViewById(R.id.button01);
quitButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
Button dispatchButton = (Button)findViewById(R.id.button01);
dispatchButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Manually start a dispatch, not needed if the tracker was started with a dispatch
// interval.
tracker.dispatch();
}
});
}
public void openBrowser1(View view) {
Intent i = new Intent("android.intent.action.VIEW", Uri.parse(""));
startActivity(i);
}
public void openBrowser2(View view) {
Intent i = new Intent("android.intent.action.VIEW", Uri.parse(""));
startActivity(i);
}
public void openBrowser3(View view) {
Intent i = new Intent("android.intent.action.VIEW", Uri.parse(""));
startActivity(i);
}
public void openBrowser4(View view) {
Intent i = new Intent("android.intent.action.VIEW", Uri.parse(""));
startActivity(i);
}
public void openBrowser5(View view) {
Intent i = new Intent("android.intent.action.VIEW", Uri.parse(""));
startActivity(i);
}
public void openBrowser6(View view) {
Intent i = new Intent("android.intent.action.VIEW", Uri.parse(""));
startActivity(i);
}
public void openBrowser7(View view) {
Intent i = new Intent("android.intent.action.VIEW", Uri.parse(""));
startActivity(i);
}
public void linkEmailClicked(View v) {
Intent it = new Intent(Intent.ACTION_SEND);
String[] tos = {getString(R.string.emailAddress)};
it.putExtra(Intent.EXTRA_EMAIL, tos);
it.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.emailSubject));
it.setType("text/plain");
startActivity(it);
}
public void myonclick1(View view) {
Intent mIntent = new Intent(this,Main2.class);
startActivity(mIntent);
Toast.makeText(
this,
"Thank you for using xxxxxxxxxxxxxxxxxxxxxx application, enjoy browsing :)", Toast.LENGTH_LONG).show();
finish();
}
@Override
protected void onStart() {
super.onStart();
// The activity is about to become visible.
}
@Override
protected void onResume() {
super.onResume();
// The activity has become visible (it is now "resumed").
}
@Override
protected void onPause() {
super.onPause();
// Another activity is taking focus (this activity is about to be "paused").
}
@Override
protected void onStop() {
super.onStop();
// The activity is no longer visible (it is now "stopped")
}
@Override
protected void onDestroy() {
super.onDestroy();
// The activity is about to be destroyed.
// Stop the tracker when it is no longer needed.
tracker.stopSession();
}
}
Button createEventButton = (Button)findViewById(R.id.NewEventButton);
Button createPageButton = (Button)findViewById(R.id.NewPageButton);
Hallo
I have searched all over but I don't get it. Should I change the "NewEventButton" to something like "button01".
The problem is that if I change it, the button it stops working, normal the button when is clicked it opens the phone browser and navigate to a website.
The same happens with the "NewPageButton", eclipse asking to be changed also to "button01" for example.
If I leave them as it is, I have errors like "cannot be resolver or is not a field"
Thanks in advance
UPDATE
Thats the main xml file,
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/aevbackground"
android:id="@+id/main"
>
<Button android:text="Other" android:id="@+id/button9" android:layout_width="wrap_content" android:layout_height="33dp"
android:onClick="myonclick1" android:layout_gravity="bottom|right"></Button>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello1"
/>
<Button android:text="Home" android:id="@+id/button01" android:layout_width="230dp" android:layout_height="34dp"
android:onClick="openBrowser1"></Button>
<Button android:text="Forum" android:id="@+id/button2" android:layout_width="210dp" android:layout_height="34dp"
android:onClick="openBrowser2"></Button>
<Button android:text="FOC" android:id="@+id/button3" android:layout_width="190dp" android:layout_height="34dp"
android:onClick="openBrowser3"></Button>
<Button android:text="ON TFC" android:id="@+id/button4" android:layout_width="170dp" android:layout_height="34dp"
android:onClick="openBrowser4"></Button>
<Button android:text="At Facebook" android:id="@+id/button5" android:layout_width="150dp" android:layout_height="34dp"
android:onClick="openBrowser5"></Button>
<Button android:text="At Twitter" android:id="@+id/button6" android:layout_width="130dp" android:layout_height="34dp"
android:onClick="openBrowser6"></Button>
<Button android:text="At Google+" android:id="@+id/button7" android:layout_width="110dp" android:layout_height="34dp"
android:onClick="openBrowser7"></Button>
<Button android:text="@string/linkEmail" android:id="@+id/button8" android:layout_width="90dp" android:layout_height="34dp"
android:onClick="linkEmailClicked"></Button>
</LinearLayout>
</FrameLayout>
Thats the main java file with Google analytics
package com.av0001;
import com.google.android.apps.analytics.GoogleAnalyticsTracker;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class Main extends Activity {
/** Called when the activity is first created. */
GoogleAnalyticsTracker tracker;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tracker = GoogleAnalyticsTracker.getInstance();
// Start the tracker in manual dispatch mode...
tracker.startNewSession("UA-25624837-1", this);
setContentView(R.layout.main);
Button createEventButton = (Button)findViewById(R.id.button01);
createEventButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
tracker.trackEvent(
"Clicks", // Category
"Button", // Action
"clicked", // Label
77); // Value
}
});
Button createPageButton = (Button)findViewById(R.id.button01);
createPageButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Add a Custom Variable to this pageview, with name of "Medium" and value "MobileApp" and
// scope of session-level.
tracker.setCustomVar(1, "Navigation Type", "Button click", 2);
// Track a page view. This is probably the best way to track which parts of your application
// are being used.
// E.g.
// tracker.trackPageView("/help"); to track someone looking at the help screen.
// tracker.trackPageView("/level2"); to track someone reaching level 2 in a game.
// tracker.trackPageView("/uploadScreen"); to track someone using an upload screen.
tracker.trackPageView("/mainspalsh");
tracker.trackPageView("/main");
tracker.trackPageView("/main2");
tracker.trackPageView("/main3");
}
});
Button quitButton = (Button)findViewById(R.id.button01);
quitButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
Button dispatchButton = (Button)findViewById(R.id.button01);
dispatchButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Manually start a dispatch, not needed if the tracker was started with a dispatch
// interval.
tracker.dispatch();
}
});
}
public void openBrowser1(View view) {
Intent i = new Intent("android.intent.action.VIEW", Uri.parse(""));
startActivity(i);
}
public void openBrowser2(View view) {
Intent i = new Intent("android.intent.action.VIEW", Uri.parse(""));
startActivity(i);
}
public void openBrowser3(View view) {
Intent i = new Intent("android.intent.action.VIEW", Uri.parse(""));
startActivity(i);
}
public void openBrowser4(View view) {
Intent i = new Intent("android.intent.action.VIEW", Uri.parse(""));
startActivity(i);
}
public void openBrowser5(View view) {
Intent i = new Intent("android.intent.action.VIEW", Uri.parse(""));
startActivity(i);
}
public void openBrowser6(View view) {
Intent i = new Intent("android.intent.action.VIEW", Uri.parse(""));
startActivity(i);
}
public void openBrowser7(View view) {
Intent i = new Intent("android.intent.action.VIEW", Uri.parse(""));
startActivity(i);
}
public void linkEmailClicked(View v) {
Intent it = new Intent(Intent.ACTION_SEND);
String[] tos = {getString(R.string.emailAddress)};
it.putExtra(Intent.EXTRA_EMAIL, tos);
it.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.emailSubject));
it.setType("text/plain");
startActivity(it);
}
public void myonclick1(View view) {
Intent mIntent = new Intent(this,Main2.class);
startActivity(mIntent);
Toast.makeText(
this,
"Thank you for using xxxxxxxxxxxxxxxxxxxxxx application, enjoy browsing :)", Toast.LENGTH_LONG).show();
finish();
}
@Override
protected void onStart() {
super.onStart();
// The activity is about to become visible.
}
@Override
protected void onResume() {
super.onResume();
// The activity has become visible (it is now "resumed").
}
@Override
protected void onPause() {
super.onPause();
// Another activity is taking focus (this activity is about to be "paused").
}
@Override
protected void onStop() {
super.onStop();
// The activity is no longer visible (it is now "stopped")
}
@Override
protected void onDestroy() {
super.onDestroy();
// The activity is about to be destroyed.
// Stop the tracker when it is no longer needed.
tracker.stopSession();
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在我看来,您正在重命名它,但没有更改 XML 布局 id 名称,因此 R.java 没有新名称。如果您也更改了 XML,那么您就不会重新编译该项目。确保在 Eclipse 环境中选择自动编译。转到项目 ->自动构建并确保其旁边有复选标记。
----替代建议----
您使用什么版本的 eclipse 和 ADB...您可能必须升级到最新版本并重新安装 ADB...我遇到了类似的编译错误,只有升级和重新安装才有效。你的代码对我来说编译得很好。不确定您将如何实现其中一些方法,并且您确实有 4 个侦听器侦听同一个按钮 R.id.button01。这是在我的 Eclipse 中运行的代码:
Sounds to me that you are renaming it but not changing the XML layout id name and hence the R.java does not have the new name. If you are changing the XML too, then you are not re-compiling the project. Make sure to have the auto-compile selected in your Eclipse environment. Go to Project -> Build Automatically and make sure it has a check mark next to it.
----Alternate Suggestions ----
What version of eclipse are you using and ADB...you might have to upgrade to the latest and reinstal ADB.... I had something similar with compilation errors and only upgrading and re-install worked. your code compiles fine for me. Not sure how your going to reach some of these methods and you do have 4 listeners listening to the same button R.id.button01. Here is your code running in my eclipse: