我对android很新,所以如果我的问题很明显,请原谅。我必须将屏幕分成两部分,并对每个片段进行操作。一部分将绘制数据,另一部分将显示数据。我已经使用片段来分割屏幕,但我想知道如何将动作分配给每个片段,以便它们一起开始。
我不想通过点击按钮启动任何片段。我想在应用程序启动后立即开始,然后两个片段都会开始显示各自的图和数据。
我们将非常感谢您在这方面的帮助。
修改
我附上了代码 PlotFragment.java(我想在启动应用程序时在其中一个片段中运行的文件)
package com.tempsensor;
import android.app.Fragment;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
public class PlotFragment extends FragmentActivity {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstancesState){
Toast.makeText(this, "Plot Comes Here", Toast.LENGTH_LONG).show();
return null;
}
}
SecondActivity.java(包含我在其中创建两个片段的Activity的java文件)
package com.tempsensor;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.support.v4.app.FragmentActivity;
public class SecondActivity extends Activity implements OnClickListener {
Button buttonexit;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
buttonexit = (Button) findViewById(R.id.button1);
buttonexit.setOnClickListener(this);
getFragmentManager().beginTransaction().add(R.id.plot_fragment, new PlotFragment()).commit();
getFragmentManager().beginTransaction().add(R.id.data_fragment, new DataFragment()).commit();
}
public void onClick(View arg0) {
if (arg0==buttonexit)
{
System.exit(0);
}
}
}
我在哪里犯了错误,理想的结果是,当应用程序启动时,这两个片段应该自动启动它们的任务,这里我只是尝试使用Toast打印文本。
答案 0 :(得分:2)
如果我正确理解您的问题,您希望应用程序打开并显示已加载所有信息的两个片段,一个情节和另一个数据?
在启动的活动中,您正在创建一个片段并提交将其添加到容器的事务,对吗?您应该为另一个片段做同样的事情:创建它并提交一个事务,将它添加到另一个容器中。
这里有一些简单的代码来证明我的意思:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getFragmentManager().beginTransaction()
.add(R.id.plot_container, new PlotFragment()).commit();
getFragmentManager().beginTransaction()
.add(R.id.data_container, new DataFragment()).commit();
}
答案 1 :(得分:0)
因此,您可以在第二个片段中创建方法。此方法将返回所需的数据。 例如:您必须在当前活动中获取片段的instanse并调用此方法,如下所示:
for (Fragment f : getActivity().getFragmentManager().getFragments()) {
if (f instanceof SecondFragment) {
int data = ((SecondFragment) f).returnData();
}
答案 2 :(得分:0)
首先,我建议您更改将片段添加到布局的方式,如下所示:
public class SecondActivity extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
buttonexit = (Button) findViewById(R.id.button1);
buttonexit.setOnClickListener(this);
PlotFragment plotFrag = new PlotFragment();
DataFragment dataFrag = new DataFragment();
addData(plotFrag);
addData(dataFrag);
getFragmentManager().beginTransaction().add(R.id.plot_fragment, plotFrag).commit();
getFragmentManager().beginTransaction().add(R.id.data_fragment, dataFrag).commit();
}
protected void addData(DataFragment dataFrag) {
Bundle args = new Bundle();
// Load data to args variable
dataFrag.setArguments(args);
}
protected void addData(PlotFragment plotFrag) {
Bundle args = new Bundle();
// Load plot data to args variable
plotFrag.setArguments(args);
}
}
在Fragments
班级中:
public class DataFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstancesState){
Bundle args = getArguments() == null ? savedInstanceState : getArguments();
// Use args to setup Fragment content
Toast.makeText(this, "Data Comes Here", Toast.LENGTH_LONG).show();
return null;
}
public class PlotFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstancesState){
Bundle args = getArguments() == null ? savedInstanceState : getArguments();
// Use args to setup Fragment content
Toast.makeText(this, "Plot Comes Here", Toast.LENGTH_LONG).show();
return null;
}