gpt4 book ai didi

android - ViewFlow 和 CircleFlowIndicator - 空指针异常

转载 作者:搜寻专家 更新时间:2023-11-01 08:49:02 25 4
gpt4 key购买 nike

我正在使用 ViewFlow & CircleFlowIndicatorview & show圈到indicate View 的变化

还是我showing same text对于每一个View ,见下图:

enter image description here

注意:

仍在 textView1 中显示“Remember Life”,在 textView2 中显示“Instantly search memories for friends ......

现在我想根据View position显示文本 , 对于 example :

如果查看position0则需要在textView1中显示“TextView - 1.0”,在textView2中显示“TextView - 2.0”,如果View position1 那么需要在textView1 中显示“TextView - 1.1”,在textView2 中显示“TextView - 2.1”和so on ...

但每次,我都会得到 Null Pointer Exceptionline number - 35

即:position = viewFlow.getPositionForView(indic);

我如何知道 ViewFlow 的当前 View 位置?

MainActivity.java:-

public class MainActivity extends Activity {

private ViewFlow viewFlow;
TextView textView1, textView2;
int position = 0;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle(R.string.circle_title);
setContentView(R.layout.screen_layout);

viewFlow = (ViewFlow) findViewById(R.id.viewflow);
viewFlow.setAdapter(new ImageAdapter(this), 1); // default focus on second circle

CircleFlowIndicator indic = (CircleFlowIndicator) findViewById(R.id.viewflowindic);
viewFlow.setFlowIndicator(indic);

textView1 = (TextView) findViewById(R.id.textView1);
textView2 = (TextView) findViewById(R.id.textView2);

position = viewFlow.getPositionForView(indic);
Toast.makeText(MainActivity.this, position, Toast.LENGTH_LONG).show();

switch (position) {
case 0:
textView1.setText("TextView - 1.0"); // TextView - 1, position - 0
textView2.setText("TextView - 2.0"); // TextView - 2, position - 0
break;

case 1:
textView1.setText("TextView - 1.1");
textView2.setText("TextView - 2.1");
break;

case 2:
textView1.setText("TextView - 1.2");
textView2.setText("TextView - 2.2");
break;

case 3:
textView1.setText("TextView - 1.3");
textView2.setText("TextView - 2.3");
break;

case 4:
textView1.setText("TextView - 1.4");
textView2.setText("TextView - 2.4");
break;

default:

break;
}

}

/* If your min SDK version is < 8 you need to trigger the onConfigurationChanged in ViewFlow manually, like this */
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
viewFlow.onConfigurationChanged(newConfig);
}
}

Logcat 报告:

08-22 06:54:53.811: W/dalvikvm(1829): threadid=1: thread exiting with uncaught exception (group=0x41465700)
08-22 06:54:53.840: E/AndroidRuntime(1829): FATAL EXCEPTION: main
08-22 06:54:53.840: E/AndroidRuntime(1829): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.indianic.viewflipperdemo/com.indianic.viewflipperdemo.CircleViewFlipperActivity}: java.lang.NullPointerException
08-22 06:54:53.840: E/AndroidRuntime(1829): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
08-22 06:54:53.840: E/AndroidRuntime(1829): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
08-22 06:54:53.840: E/AndroidRuntime(1829): at android.app.ActivityThread.access$600(ActivityThread.java:141)
08-22 06:54:53.840: E/AndroidRuntime(1829): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
08-22 06:54:53.840: E/AndroidRuntime(1829): at android.os.Handler.dispatchMessage(Handler.java:99)
08-22 06:54:53.840: E/AndroidRuntime(1829): at android.os.Looper.loop(Looper.java:137)
08-22 06:54:53.840: E/AndroidRuntime(1829): at android.app.ActivityThread.main(ActivityThread.java:5103)
08-22 06:54:53.840: E/AndroidRuntime(1829): at java.lang.reflect.Method.invokeNative(Native Method)
08-22 06:54:53.840: E/AndroidRuntime(1829): at java.lang.reflect.Method.invoke(Method.java:525)
08-22 06:54:53.840: E/AndroidRuntime(1829): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
08-22 06:54:53.840: E/AndroidRuntime(1829): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-22 06:54:53.840: E/AndroidRuntime(1829): at dalvik.system.NativeStart.main(Native Method)
08-22 06:54:53.840: E/AndroidRuntime(1829): Caused by: java.lang.NullPointerException
08-22 06:54:53.840: E/AndroidRuntime(1829): at android.widget.AdapterView.getPositionForView(AdapterView.java:597)
08-22 06:54:53.840: E/AndroidRuntime(1829): at com.indianic.viewflipperdemo.CircleViewFlipperActivity.onCreate(CircleViewFlipperActivity.java:35)
08-22 06:54:53.840: E/AndroidRuntime(1829): at android.app.Activity.performCreate(Activity.java:5133)
08-22 06:54:53.840: E/AndroidRuntime(1829): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
08-22 06:54:53.840: E/AndroidRuntime(1829): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
08-22 06:54:53.840: E/AndroidRuntime(1829): ... 11 more

XML:-

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/com.indianic.viewflipperdemo"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<com.indianic.viewflipperdemo.widget.ViewFlow
android:id="@+id/viewflow"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
app:sidebuffer="3" >
</com.indianic.viewflipperdemo.widget.ViewFlow>

<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:src="@drawable/ic_launcher" />

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/textView2"
android:layout_centerHorizontal="true"
android:text="Remember Life"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textStyle="bold" />

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/viewflowindic"
android:layout_centerHorizontal="true"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:padding="5dp"
android:text="Instantly search memories of friends, season, birthdays, and more"
android:textAppearance="?android:attr/textAppearanceSmall" />

<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:orientation="horizontal"
android:paddingBottom="10dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingTop="10dp" >

<Button
android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="left|center"
android:layout_weight="1"
android:text="Register"
android:textColor="#000000" />

<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_weight="1"
android:text="Login"
android:textColor="#000000" />
</LinearLayout>

<com.indianic.viewflipperdemo.widget.CircleFlowIndicator
android:id="@+id/viewflowindic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/linearLayout1"
android:layout_centerHorizontal="true"
android:padding="20dp"
app:inactiveType="stroke" />

</RelativeLayout>

最佳答案

异常原因:

您在 onCreate 方法中添加了一个 switch-case 来更改文本。这是不正确的。用户输入应由 implementing event listeners in Java 处理.

解决方案:

向 View 添加一个监听器。当滑动 View 时,监听器将处理事件并根据位置更改文本。

在 View 中添加一个setOnViewSwitchListener并覆盖onSwitched方法。

示例代码:

viewFlow.setOnViewSwitchListener(new ViewSwitchListener() {
public void onSwitched(View v, int position) {
//position is received as an argument from the system, it doesn't need to be calculated
switch (position) {
case 0:
textView1.setText("TextView - 1.0"); // TextView - 1,
// position - 0
textView2.setText("TextView - 2.0"); // TextView - 2,
// position - 0
break;
// ----rest of your code here------

引用资料:

关于android - ViewFlow 和 CircleFlowIndicator - 空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25445815/

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