整数代替Ids和布局

时间:2015-06-05 14:10:26

标签: android dialog

我已经反编译了一个apk用于java代码,在其中我得到了这些整数值代替R.id和R.layouts。你能解释一下为什么会这样吗?

protected void onCreate(Bundle paramBundle)
{
    super.onCreate(paramBundle);
    setContentView(2130903041);
    this.b1 = ((Button)findViewById(2131230721));
    this.b2 = ((Button)findViewById(2131230722));
    this.b1.setOnClickListener(new View.OnClickListener()
    {
        public void onClick(View paramAnonymousView)
        {
            Settingss.this.showDialog(1);
        }
    });
    this.b2.setOnClickListener(new View.OnClickListener()
    {
        public void onClick(View paramAnonymousView)
        {
            Settingss.this.showDialog(2);
        }
    });
}

protected Dialog onCreateDialog(int paramInt)
{
    if (paramInt == 1)
    {
        final Dialog localDialog1 = new Dialog(this);
        localDialog1.setContentView(2130903043);
        localDialog1.setTitle("Set Message");
        final EditText localEditText = (EditText)localDialog1.findViewById(2131230724);
        Button localButton1 = (Button)localDialog1.findViewById(2131230721);
        ((Button)localDialog1.findViewById(2131230722)).setOnClickListener(new View.OnClickListener()

我知道第一个setContentView(2130903041)用于R.layout.layoutname,接下来的两个是布局中的按钮,所以我直接用按钮的特定ID替换整数值。

单击布局中的SetMessage按钮时,会弹出一个对话框,要求设置消息。所以我不知道如何设置该对话框的ID,因为布局中没有提到它并且从不知道地弹出。

我感到困惑的代码是:

final Dialog localDialog1 = new Dialog(this);
localDialog1.setContentView(2130903043);
localDialog1.setTitle("Set Message");
final EditText localEditText = (EditText)localDialog1.findViewById(2131230724);
Button localButton1 = (Button)localDialog1.findViewById(2131230721);

((Button)localDialog1.findViewById(2131230722)).setOnClickListener(new View.OnClickListener()
{

1 个答案:

答案 0 :(得分:0)

这很简单。生成apk后,ID会在java文件中转换为 Decimal 值。您必须将其转换为十六进制(您可以使用计算器执行此操作)。获得十六进制值后,只需在 R.java 文件中搜索它,就会得到字段或id的名称。

例如,在行中:localDialog1.setContentView(2130903043);

十六进制中的id是7F030003。现在,您可以在R.java文件中搜索此值。