我的
MainActivity
有一个 Add 按钮,单击该按钮会创建我的自定义视图的新实例:()
在其角落,我的自定义视图有一个图像按钮,应该打开新活动,列表中的每个自定义视图都应该打开自己的新活动(如果我的主要活动中有 3 个视图,它们应该打开 3 个不同的新活动)。
如何在每次添加自定义视图时创建一个新活动,然后在按下按钮时能够打开该新活动?
主要活动:
package com.example.teacherplanner;
import android.content.Intent;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageButton AddNewWeek= findViewById(R.id.add_week_btn);
LinearLayout WeekWindow = findViewById(R.id.LIST_OF_WEEKS);
AddNewWeek.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
WeekThumbnail NewWeek = new WeekThumbnail(MainActivity.this);
WeekWindow.addView(NewWeek);
}
});
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
setContentView(R.layout.layout_week);
ImageButton OpenEditing = findViewById(R.id.WEEK_SETTINGS);
OpenEditing.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
openWeekEditing();
}
});
}
public void openWeekEditing() {
Intent intent = new Intent(this, WeekEditing.class);
startActivity(intent);
}
}
自定义查看java文件:
package com.example.teacherplanner;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.os.Bundle;
import android.util.AttributeSet;
import android.util.LayoutDirection;
import android.view.LayoutInflater;
import android.view.TextureView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintSet;
public class WeekThumbnail extends RelativeLayout {
public WeekThumbnail(Context context) {
super(context);
init(context);
}
public WeekThumbnail(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public WeekThumbnail(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
}
private void init(Context context) {
LayoutInflater inflater = LayoutInflater.from(context);
inflater.inflate(R.layout.layout_week, this, true);
}
}
我的自定义视图与 java 文件绑定,我尝试将单击操作放在那里,但它不起作用,当我每次单击它时将其放入主要活动时,应用程序都会崩溃。
如何在每次添加自定义视图时创建一个新活动,然后在按下按钮时能够打开该新活动?
如果您的视图应该打开完全不同的活动,那么您应该创建三个不同的活动,它们将为指定视图显示适当的内容。但是,如果活动应该具有相同的外观,但它们之间只有数据不同,那么您应该有单个活动,并在创建时使用意图额外机制将数据传递给它。例如:
Intent intent = new Intent(context, WeekEditing.class);
intent.putExtra("key", value);
context.startActivity(intent);
value 是每个视图的不同数据,在您的 Activity 中,您可以使用 onCreate 访问此数据:
Bundle extras = getIntent().getExtras();
if (extras != null) {
String value = extras.getString("key");
}
我不确定什么会导致您的应用程序崩溃,有关使用活动的更多详细信息,请参见此处:https://developer.android.com/guide/components/activities/intro-activities