gpt4 book ai didi

android - 如何从 View 寻呼机访问 View

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:42:36 25 4
gpt4 key购买 nike

我在 Activity 中使用 View 寻呼机。我创建了 7 个页面的 View 。现在我想在我的 Activity 中访问页面 View 。我得到的数据为空白。 Activity 中

public class ActivitySingleEntry extends Activity implements OnClickListener {

private ViewPager mPager;
private FixedTabsView mFixedTabs;

private ExamplePagerAdapter mPagerAdapter;
private TabsAdapter mFixedTabsAdapter;
private EditText edtFieldName;

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

setContentView(R.layout.activity_fixed_tabs);
initViewPager(7, 0xFFFFFFFF, 0xFF000000);
mFixedTabs = (FixedTabsView) findViewById(R.id.fixed_tabs);
mFixedTabsAdapter = new FixedTabsAdapter(this);
mFixedTabs.setAdapter(mFixedTabsAdapter);
mFixedTabs.setViewPager(mPager);

}

private void initViewPager(int pageCount, int backgroundColor, int textColor) {
mPager = (ViewPager) findViewById(R.id.pager);
mPagerAdapter = new ExamplePagerAdapter(this, pageCount,
backgroundColor, textColor);
mPager.setAdapter(mPagerAdapter);
mPager.setCurrentItem(1);
mPager.setPageMargin(5);
}

@Override
public void onClick(View v) {

// LinearLayout lin=(LinearLayout) mPager.getChildAt(mPager.getCurrentItem());
// edtFieldName=(EditText) lin.findViewById(R.id.edtFieldName);
// Log.d("test", "From get child:"+edtFieldName.getText().toString()+":");

Log.d("test", "Current Page:"+mPager.getCurrentItem());

LinearLayout linearLayout=(LinearLayout) mPager.findViewWithTag("lin"+mPager.getCurrentItem());
edtFieldName=(EditText) linearLayout.findViewById(R.id.edtFieldName);

edtFieldName=(EditText) findViewById(R.id.edtFieldName);
if (edtFieldName==null) {
ShowToast.makeToast(getApplicationContext(), "Edt null");
}else
ShowToast.makeToast(getApplicationContext(),
"Data saved " + edtFieldName.getText().toString() + ":"
+ mPager.getCurrentItem());
}
}

我的 PageAdaper

public class ExamplePagerAdapter extends PagerAdapter {

protected transient Activity mContext;

private int mLength = 0;
private int mBackgroundColor = 0xFFFFFFFF;
private int mTextColor = 0xFF000000;

private String[] mData = { "Temperature", "Sugar", "BP", "Field 4",
"Field 5", "Field 6", "Field 7" };

public ExamplePagerAdapter(Activity context, int length,
int backgroundColor, int textColor) {

mContext = context;
mLength = length;
mBackgroundColor = backgroundColor;
mTextColor = textColor;

}

@Override
public int getCount() {
return mLength;
}

@Override
public Object instantiateItem(View container, int position) {

LinearLayout linearLayout = (LinearLayout) View.inflate(mContext,
R.layout.activity_single_entry, null);

TextView txtFieldName = (TextView) linearLayout
.findViewById(R.id.txtFieldName);
EditText edtFieldName = (EditText) linearLayout
.findViewById(R.id.edtFieldName);

String filedName = mData[position];
txtFieldName.setText(filedName);
edtFieldName.setHint("Please enter " + filedName);
edtFieldName.setInputType(InputType.TYPE_CLASS_TEXT);

if (filedName.equals("Temperature")) {
edtFieldName.setInputType(InputType.TYPE_CLASS_NUMBER);
} else if (filedName.equals("Sugar")) {
edtFieldName.setInputType(InputType.TYPE_CLASS_NUMBER);
} else if (filedName.equals("BP")) {
edtFieldName.setInputType(InputType.TYPE_CLASS_NUMBER);
}


edtFieldName.setTag("edt");

((ViewPager) container).addView(linearLayout, 0);
linearLayout.setTag("lin"+position);

Log.d("test", "Adapter creating item:"+position );
return linearLayout;
}



@Override
public void destroyItem(View container, int position, Object view) {
((ViewPager) container).removeView((View) view);
}

@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((View) object);
}

@Override
public void finishUpdate(View container) {
}

@Override
public void restoreState(Parcelable state, ClassLoader loader) {
}

@Override
public Parcelable saveState() {
return null;
}

@Override
public void startUpdate(View container) {
}

}

在 R.layout.activity_single_entry xml 中我有 edittext 和带有 onclick 的按钮。

MYXml

    <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >

<TextView
android:id="@+id/txtFieldName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />

<EditText
android:id="@+id/edtFieldName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_weight="1"
android:hint="Please enter field value" />
</LinearLayout>

<Button
android:id="@+id/btnSave"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Save"
android:layout_margin="20dp"
android:onClick="onClick"
/>

</LinearLayout>

如果我在 pageadapter 中使用

@Override
public int getItemPosition(Object object) {
// TODO Auto-generated method stub
return POSITION_NONE;
}

单击按钮我想从编辑文本访问数据。

我能够获得第一页的值(value)。不是所有的。

最佳答案

首先你设置标签():

linearLayout.setTag("lin"+position);

位置在 <0..numPages-1>

但阅读它:

LinearLayout linearLayout=(LinearLayout) mPager.findViewWithTag("lin"+mPager.getCurrentItem());

findViewWithTag 是到处返回 null 还是仅在最后一页返回 null?如果是第一页,mPager.getCurrentItem() 返回 0,因此阅读时无需添加 +1

关于android - 如何从 View 寻呼机访问 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16053472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com