Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android setContentView和侦听器_Android_Android Layout - Fatal编程技术网

Android setContentView和侦听器

Android setContentView和侦听器,android,android-layout,Android,Android Layout,在某个时候,我正在更改活动的内容视图。(至视图2)。 将其更改回View1后,侦听器不再工作。 我已经尝试将侦听器放入onResume()方法中 使用setContentView()显示进度屏幕/请稍候等(在异步任务运行时)是否常见。 或者每个活动应该只有一个主视图?(并动态替换内容) //编辑:更具体地说: 我在找像这样的东西 LinearLayout item = (LinearLayout) findViewById(R.id.mainView); View child = getLayo

在某个时候,我正在更改活动的内容视图。(至视图2)。 将其更改回View1后,侦听器不再工作。 我已经尝试将侦听器放入onResume()方法中

使用setContentView()显示进度屏幕/请稍候等(在异步任务运行时)是否常见。 或者每个活动应该只有一个主视图?(并动态替换内容)

//编辑:更具体地说: 我在找像这样的东西

LinearLayout item = (LinearLayout) findViewById(R.id.mainView);
View child = getLayoutInflater().inflate(R.layout.progress, null);
item.addView(child);
但是,它不应该添加“progress.xml”,而应该删除当前布局,只显示“progress.xml”。 我是否需要一个“容器”并显示/隐藏主视图/进度? 但这对我来说似乎不太合适

另请参见下面的代码(已剥离)


每个活动只能有一个UI,您应该创建另一个活动,并在其onCreate方法中设置内容视图

步骤:

  • 创建活动
  • 使用以下代码设置内容视图:

    创建时的公共void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.view2)

    }

  • 将应用程序清单中的活动定义为:

  • 在第一个活动中创建意图:

    创建时的公共void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.view1)

    Button Button=(Button)findViewById(R.id.Button)

    setOnClickListener(新的OnClickListener(){ @凌驾 公共void onClick(视图v){ 意图(); } }); }

    无效意图(){

    Intent Intent=new Intent();Intent.setClass(Activity1.this,Activity2.class); 星触觉(意向)

    }


  • c:

    假设您使用“findViewById”初始化“button”,每次设置ContentView(R.layout.view1)时都需要这样做

    谢谢大家的回复。您让我意识到,当我删除或替换(使用setContentView())主视图时,onClickListeners正在丢失。我现在就这样结束了:

    一旦创建:

    setContentView(R.layout.parse);
    LinearLayout container = (LinearLayout) findViewById(R.id.container);
    container.addView(getLayoutInflater().inflate(R.layout.dialog, null));
    container.addView(getLayoutInflater().inflate(R.layout.progress, null));
    
    开始做某事:

    findViewById(R.id.dialog).setVisibility(View.INVISIBLE);
    findViewById(R.id.progress).setVisibility(View.VISIBLE);
    
    onEndDoingSomehting:

    findViewById(R.id.dialog).setVisibility(View.VISIBLE);
    findViewById(R.id.progress).setVisibility(View.INVISIBLE);
    

    我可能会改变View.INVISIBLE to View.GONE,就像nmr所说的,但因为我从未使用View.GONE,所以我必须先检查Android doku;)

    如何创建“按钮”?你需要展示更多的代码。我认为你的方法在某些情况下是可以的(例如,view1是加载或启动屏幕,view2是内容。处理此问题的一种方法是将view1和view2的内容放入嵌套在FrameLayout下的同一布局文件中,并根据需要使用View#setVisibility()将其可见性从View.GONE切换到View.VISIBLE)。好吧,但不止一个UI在工作…但在onCreate方法中只调用一次setContentView似乎是一件常见的事情,仅此而已。我不能进行两个活动,在这里没有意义。更改活动不是一件很麻烦的事,但如果您想要的只是一个进度对话框,您可以创建一个进度对话框,有一个look此处为参考developer.android.com/reference/android/app/ProgressDialog.htmlThe this is the Activity_XY是三个选项卡之一。它在按下按钮后启动异步任务,该按钮调用Activity_XY的进度处理程序方法,并向其提供一些信息(文本).谢谢,你说得对,这是我应该称之为“听众绑定器”的要点…但这不太合适。。。
    findViewById(R.id.dialog).setVisibility(View.VISIBLE);
    findViewById(R.id.progress).setVisibility(View.INVISIBLE);