【问题标题】:Android start activities in a loopAndroid 循环启动活动
【发布时间】:2015-09-02 09:09:26
【问题描述】:

我有一个包含 3 条记录的 SQLite 数据库,例如:
1 - Name1 - Do wash
2 - Name2 - Do this
3 - Name3 - Do that

现在我想在用户按下按钮时开始一个接一个的活动(对于每条记录)。 Activity 与其他内容始终相同。
那么最好的方法是什么?

我的想法如下:
- 创建一个 for 循环并使用 StartActivityForResult(...)
- 使用意图通过所有活动传递数据
- 创建一个临时表并在每个活动中读取数据
- 只更改布局的内容,但不知道我该怎么做

那么有什么建议吗?

【问题讨论】:

  • 为什么不能打开同一个activity并传​​入一个参数?然后决定如何处理数据?

标签: android sqlite for-loop android-activity android-studio


【解决方案1】:

我认为要在多个内容上显示相同类型的视图,您应该将片段与 viewpager 一起使用。 我只是向您推荐 viewpager 和片段的代码 -

内容布局(pages.xml)-

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:id="@+id/rel" >

    <TextView
        android:id="@+id/pageContent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" />

</RelativeLayout>

主要活动内容(activity_main.xml)-

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <RelativeLayout
        android:id="@+id/relativeTextview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@+id/header"
        android:padding="5dp" >

        <android.support.v4.view.ViewPager
            android:id="@+id/reviewpager"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
    </RelativeLayout>

</RelativeLayout> 

用于在viewpager上设置的分页器适配器(ViewPagerAdapter.java)-

public class ViewPagerAdapter extends PagerAdapter {
    int size;
    Activity act;
    View layout;
    TextView pagecontent;
    Button click;

    public ViewPagerAdapter(MainActivity mainActivity, int noofsize) {
        // TODO Auto-generated constructor stub
        size = noofsize;
        act = mainActivity;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return size;
    }

    @Override
    public Object instantiateItem(View container, int position) {
        // TODO Auto-generated method stub
        LayoutInflater inflater = (LayoutInflater) act
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        layout = inflater.inflate(R.layout.pages, null);
        pagecontent = (TextView) layout.findViewById(R.id.pageContent);
        int pagenumberTxt=position + 1;
        pagecontent.setText("Now your in Page No  " +pagenumberTxt );
        ((ViewPager) container).addView(layout, 0);
        return layout;
    }

    @Override
    public void destroyItem(View arg0, int arg1, Object arg2) {
        ((ViewPager) arg0).removeView((View) arg2);
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        return arg0 == ((View) arg1);
    }

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

    // }

}

现在在主要活动中((MainActivity.java)-

public class MainActivity extends Activity {

          int noofsize = 6;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ViewPagerAdapter adapter = new ViewPagerAdapter(MainActivity.this,
                noofsize);
        ViewPager myPager = (ViewPager) findViewById(R.id.reviewpager);
        myPager.setAdapter(adapter);
        myPager.setCurrentItem(0);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}

并且不要忘记在 manufest.xml 中提及活动。 在 pages.xml 中,您可以在单击此按钮时添加按钮,您可以使用侦听器更改下一个和上一个(mPager.setCurrentItem(位置))的视图。

【讨论】:

  • 谢谢。看起来不错。但是我必须在哪里实现按钮点击?我在 MainActivity 中尝试过,但出现了崩溃。
【解决方案2】:

为此使用活动将对 RAM 造成影响。请改用片段。

正如您所引用的那样,回答您的原始问题,请使用onActivityResult(),至于您对此的关注: - 仅更改布局的内容,但不知道我该怎么做

利用意图传递的数据并进行相应处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    相关资源
    最近更新 更多