相关疑难解决方法(0)

android view.getId()返回-1

我需要更改数据表中一系列标题单元格的文本.
为了实现这一点,我需要检索并存储分配给这些单元格的视图ID,以便稍后可以使用它们来识别这些单元格视图.
但是,当我尝试获取刚刚膨胀的单元格视图的ID时,它总是返回-1.

这是我的示例代码:

@Override
public View getView(final int row, final int column, View converView, ViewGroup parent) {
    if (converView == null) {
        converView = inflater.inflate(getLayoutResource(row, column), parent, false);
        if (row == -1){
            int viewId = converView.getId();
            setHeaderId(viewId, column+1);

        }  
    }
...     
}
Run Code Online (Sandbox Code Playgroud)

尽管视图id已经被分配并且在代码调试期间可以查看,但上面代码中的converView.getId()返回-1.例如,我在调试期间可以看到以下内容:converView = LinearLayout(id = 830042440680)

知道为什么我在上面的代码中得到-1(= NO_ID)?

android view

7
推荐指数
1
解决办法
3775
查看次数

如何为动态创建的视图分配唯一ID?

在我的应用程序中,我正在创建Views- 在这种情况下EditText- 动态.但View我添加的每一个都需要有一个唯一的ID.

EditText editText = new EditText(context);
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
editText.setLayoutParams(params);

// Which value am I supposed to use here?
editText.setId(value);

layout.addView(editText);
Run Code Online (Sandbox Code Playgroud)

如果我分配一个随机值,我害怕冲突,我想不出任何方式生成id而没有冲突的可能性.

请注意,我不知道可以在res/values/ids.xml中定义一组固定的ID,但这不是我想要的!我需要动态创建ID!我不知道我需要多少.

那么有没有安全的方法来生成ID?

java xml android

7
推荐指数
2
解决办法
7337
查看次数

以编程方式为视图创建资源 ID

View包含一个方法setId(int)。我的问题是,如何以编程方式为对象提供一个不与任何资源 ID 重叠的 ID R

android view android-resources

5
推荐指数
1
解决办法
3954
查看次数

如何获取在android中动态创建的单选按钮的id

在我的活动中,我正在创建一个动态的无线电组.我在Sqlite数据库中有一些问题和答案,在活动中检索它们然后在RadioGroup中设置.这工作正常.但在那之后,我希望用户获得所选的单选按钮的所有ID以将它们存储在数据库中.一般来说,当我们有选项的ID时,我们会这样做:

            id1=rdgroup1.getCheckedRadioButtonId();
            que1=(RadioButton)findViewById(id1);
            ans1=que1.getId()+""; // so here I will get radio button's ID.
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,我将如何获得所选单选按钮的ID.这是我动态创建radiogroup的代码.

     LinearLayout mLinearLayout = (LinearLayout) findViewById(R.id.linear1);
        c1=db.rawQuery("SELECT * FROM QueTable WHERE AgeGroup='10-20'", null);
        c1.moveToFirst();
        int i = c1.getCount();
        if(i > 0)
        {
            Log.w("START", "start");
            while (i > 0)
            {
                TextView title = new TextView(this);
                questions = c1.getString(1);
                title.setText(questions);
                title.setTextColor(Color.BLACK);
                mLinearLayout.addView(title);
                // create radio button

                answers=c1.getString(2);
                String[] answer = answers.split(",");
                rb = new RadioButton[5];
                rg = new RadioGroup(this);
                rg.setOrientation(RadioGroup.VERTICAL);

                int k = answer.length;

                for (int j = 0; …
Run Code Online (Sandbox Code Playgroud)

java sqlite android android-sqlite android-radiogroup

5
推荐指数
1
解决办法
3336
查看次数

Android以编程方式创建ViewPager

我以编程方式创建了一个视图分页器,并将此视图分页器添加到布局中,但它不会运行.

ViewPager viewPager = new ViewPager(this);
viewPager.setAdapter(new MyPagerAdapter());
addView(viewPager);
Run Code Online (Sandbox Code Playgroud)

视图寻呼机无效; 但是当我从XML使用它时它工作正常.我想动态地使用它.

android android-viewpager

4
推荐指数
1
解决办法
7121
查看次数

Android:查找动态创建的视图的 ID

我有以下问题:

在 Android Studio 中,EditTextExerciseButton单击an 时,我会动态生成 en :

public void exerciseButtonClick(View view) {
  EditText exercise = new EditText(this);
  exercise.setId(exerciseId);
  exerciseId++;
}
Run Code Online (Sandbox Code Playgroud)

稍后在代码中,我想EditText通过 ID引用所有我的 。我正在尝试这样的事情,但这不起作用:

for (int i = 1; i < exerciseId; i++) {
                EditText currentEditText = (EditText) findViewById(i);
                // further instructions on that EditText
}
Run Code Online (Sandbox Code Playgroud)

错误当然在这里:findViewById(i),显示预期资源类型为 id。我怎么解决这个问题?

android view find

4
推荐指数
1
解决办法
3854
查看次数

具有相同id的多个组件如何在android中工作?

我已经定义了几个布局,其中很少有id是多个定义的.我很困惑它是如何工作的?为什么它不像我们进入java代码那样给出错误?最重要的是,环境如何决定它需要调用哪个组件?

我理解id生成的过程是自动化的,它被添加到R.java中.例如,如果我们有相同的ID,在两个XML中说"image1",比如说"layout1"和"layout2".但在R.java中它不会有2个ID.这意味着它一次只能引用一个组件.

如果我们必须在Activity中使用2个XML,一个作为activity.setcontentview(layout1),另一个作为PopupWindow.setContentView(layout2).在这种情况下会发生什么?

可能是它非常基本的问题,但我错过了什么吗?

android

2
推荐指数
1
解决办法
3740
查看次数

Android - 动态分配和检索ID

我知道如何通过调用动态地分配ID setID().由于ID是唯一的,我曾经使用ids.xmlsetID()从预先生成的ID池中传递给ID.

问题1:有没有办法在不使用的情况下分配ID,ids.xml因为我无法预测运行时需要多少ID?

我试图绕过问题1中提出的第一个问题,动态分配每个基于其标签的哈希值的ID(每个标签都是唯一的),但没有办法保证ID不会与ID的自动生成冲突R.java.

问题1.1:如何解决ID命名冲突?

问题2:假设我具有动态分配和生成的ID值.由于未出现上述ID R.id,findViewById()因此不适用于检索视图.因此,当ID已知时,如何检索视图?

答案2:只有在onCreate()返回控制(终止)后,才能通过相应的ID检索视图.

android android-widget android-layout

1
推荐指数
1
解决办法
8605
查看次数