我一直在按照以下教程将我的应用程序与Facebook集成. Facebook教程
我已经按照教程中的所有内容进行了操作,但是我遇到applicationId cannot be null
了两个案例,而且非常令人沮丧.
我FacebookActivity
onCreate
有以下内容,与教程完全相同:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
uiHelper = new UiLifecycleHelper(this, callback);
uiHelper.onCreate(savedInstanceState);
setContentView(R.layout.main_fb);
FragmentManager fm = getSupportFragmentManager();
fragments[SPLASH] = fm.findFragmentById(R.id.splashFragment);
fragments[SELECTION] = fm.findFragmentById(R.id.selectionFragment);
FragmentTransaction transaction = fm.beginTransaction();
for(int i = 0; i < fragments.length; i++)
{
transaction.hide(fragments[i]);
}
transaction.commit();
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试显示我得到的活动时applicationId cannot be null
,LogCat指向的行是:uiHelper.onCreate(savedInstanceState);
然后我尝试评论该行,并显示活动.但是现在当我点击它时LoginButton
,我得到了相同的错误,但这次是指向facebook中的LoginButton类中的applicationId字段.
我已经在我的字符串值和我的清单中有Id,如下所示:
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/APP_ID"/>
Run Code Online (Sandbox Code Playgroud)
我尝试使用代码获取Id,但没有任何改变.
究竟是什么造成了这一切?
正如标题所说,我希望能够在计算机上找到APK是否已将debuggable设置为true或false,而无需将其安装在设备上,运行它并查看它是否显示在DDMS中.
是否有一种明确的方法可以阻止ProGuard将类更改为实现接口?
我有一个实现的类java.io.Serializable
,让我们称之为com.my.package.name.Foo
.我发现在运行ProGuard后,它不再实现了Serializable
.我得到null
我从投后Serializable
,以Foo
和false
,如果我请与一个实例instanceof Serializable
.我已确保将ProGuard设置为忽略此类:
-keep class com.my.package.name.Foo
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
-keep class com.my.package.name.Foo { *; }
Run Code Online (Sandbox Code Playgroud)
我也尝试了整个包:
-keep class com.my.package.name.** { *; }
Run Code Online (Sandbox Code Playgroud)
要么:
-keep class com.my.package.** { *; }
Run Code Online (Sandbox Code Playgroud)
并且还要保留所有Serializable
课程:
-keep class * implements java.io.Serializable { *; }
Run Code Online (Sandbox Code Playgroud)
但无济于事.我在兄弟包(大致:)中有另一个类,com.my.package.name2.Bar
它也实现Serializable
和使用类似但没有问题.
我不确定它是否相关,但我将它装在一个罐子里用于Android.使用这些类的代码包括将它们放入Bundle
s中,这就是我需要的原因Serializable
.我认为也许某种程度上ProGuard认为它Foo
从未被用作a Serializable
但似乎不太可能,因为我将它作为参数传递给我,Bundle.putSerializable(String, Serializable)
并且我做了隐式演员:Serializable serializable = foo;
.事实上,当我调试时,我可以看到Foo
get into Bundle …
我创造TableLayout
.在TableLayout
我创建动态行并在表行上添加按钮数.OnTouchListener
应用于按钮以放大和缩小.当我移动我的手指慢慢放大并缩小工作正常但当我的手指移动快速缩放功能不能正常工作.
我的源代码是.
请建议我如何改进我的代码,当它以正常的方式工作
package com.exa;
import android.app.Activity;
import android.content.res.Resources;
import android.graphics.PointF;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.FloatMath;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
public class DynamictablerowActivity extends Activity implements OnTouchListener,OnClickListener{
/** Called when the activity is first created. */
Button textView[][]= new Button[39][40];
TableRow tableRow;
TableLayout tableLayout;
ScrollView sc;
float c=10;
RelativeLayout re;
float olddistanc;
static …
Run Code Online (Sandbox Code Playgroud) http://img683.imageshack.us/img683/645/weatherscreenmockupoutl.png
我问自己什么是编码这种布局的最佳方法.基本上我只需要知道如何获得具有相等宽度的七列.
提前致谢!
我正在寻找一种方法让我的应用程序在直接从Android市场打开时启动活动,但不在启动器菜单中维护活动.我认为通过使用以下设置,我将能够实现这一点:
<activity android:name="com.package.test.MyActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
但是,看起来使用这些设置,活动似乎甚至不存在于应用程序中 - 它无法从市场上打开,也不会出现在启动器菜单中.但是,只需添加:
<category android:name="android.intent.category.LAUNCHER" />
Run Code Online (Sandbox Code Playgroud)
该应用程序都做到了.问题是我确实希望活动从Market运行,但我不想在启动器菜单中运行它.
任何人都可以告诉我如何实现这一目标?
我正在使用TableLayout来显示数据.当活动调用onCreate()时,将设置右列TextView的文本.
现在,正如您在下图中看到的那样,我的地址文本可以很长并且应该被包装.所以我设置android:layout_width="wrap_content"
.但它仍然需要一个宽度的屏幕大小来包装数据.我怎样才能克服这个问题?
我的xml:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5px">
<TableRow>
<TextView android:text="Job#"
android:paddingRight="5px" />
<TextView android:id="@+id/DetailJobNo" />
</TableRow>
<TableRow>
<TextView android:text="Address"
android:paddingRight="5px" />
<TextView android:id="@+id/DetailAddress"
android:layout_width="wrap_content"
android:text="Address Address Address Address Address Address Address Address "/>
</TableRow>
</TableLayout>
Run Code Online (Sandbox Code Playgroud) 我有一个代码,它遵循以下 -
for(int i=0; i < jArray.length() ; i++) {
json_data = jArray.getJSONObject(i);
int id=json_data.getInt("id");
String name=json_data.getString("name");
Log.d(name,"Output");
}
Run Code Online (Sandbox Code Playgroud)
当我查看LogCat时,我看到了查询的所有"名称",每条记录都被打印出来.我只需要将这些结果插入ListView.我怎么能做到这一点?
PS - 我没有ArrayAdapter的单独类.这可能是原因吗?
我有一个广播接收器(c2dm推送接收器).当我收到推送时,我希望这种情况发生:
我的主要问题是我无法让广播接收器为我启动StopAlarmActivity.
我在清单中注册了广播接收器.
这是我用来尝试启动活动的代码:
Intent intentHome = new Intent(context, StopAlarmActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intentHome);
Run Code Online (Sandbox Code Playgroud)
这是stacktrace消息:
11-20 00:29:30.514:E/AndroidRuntime(13612):java.lang.RuntimeException:无法启动接收器com.packagename.PushReceiver:android.util.AndroidRuntimeException:从Activity上下文外部调用startActivity()需要FLAG_ACTIVITY_NEW_TASK标志.这真的是你想要的吗?
我见过有些人说它只是为了意图添加FLAG_ACTIVITY_NEW_TASK,异常也告诉我,所以我真的不明白为什么它不起作用.
有人有个主意吗?提前致谢!
我想在活动之间刷卡,但我不确定最佳做法是什么.
我应该立刻扔掉所有东西并从每个活动滚动吗?......这会造成记忆问题吗?
或者我最好实施实际滑动?
我还应该考虑其他方法吗?
最终游戏将是10-15个充满HTML的活动,组成一个杂志...所以我希望用户能够从每篇文章(每个活动1个)刷到另一个.
谢谢!